Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91ebe2a9 authored by Heiko Carstens's avatar Heiko Carstens Committed by Linus Torvalds
Browse files

[PATCH] lockdep: annotate qeth driver



Annotate the qeth driver which uses a private skb-queue-head that is safely
used in hardirq context too.

Has no effect on non-lockdep kernels.

Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Acked-by: default avatarIngo Molnar <mingo@elte.hu>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 60be6b9a
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -84,6 +84,8 @@ static debug_info_t *qeth_dbf_qerr = NULL;


DEFINE_PER_CPU(char[256], qeth_dbf_txt_buf);
DEFINE_PER_CPU(char[256], qeth_dbf_txt_buf);


static struct lock_class_key qdio_out_skb_queue_key;

/**
/**
 * some more definitions and declarations
 * some more definitions and declarations
 */
 */
@@ -3229,6 +3231,9 @@ qeth_alloc_qdio_buffers(struct qeth_card *card)
				&card->qdio.out_qs[i]->qdio_bufs[j];
				&card->qdio.out_qs[i]->qdio_bufs[j];
			skb_queue_head_init(&card->qdio.out_qs[i]->bufs[j].
			skb_queue_head_init(&card->qdio.out_qs[i]->bufs[j].
					    skb_list);
					    skb_list);
			lockdep_set_class(
				&card->qdio.out_qs[i]->bufs[j].skb_list.lock,
				&qdio_out_skb_queue_key);
			INIT_LIST_HEAD(&card->qdio.out_qs[i]->bufs[j].ctx_list);
			INIT_LIST_HEAD(&card->qdio.out_qs[i]->bufs[j].ctx_list);
		}
		}
	}
	}
@@ -5272,6 +5277,7 @@ qeth_free_vlan_buffer(struct qeth_card *card, struct qeth_qdio_out_buffer *buf,
	struct sk_buff_head tmp_list;
	struct sk_buff_head tmp_list;


	skb_queue_head_init(&tmp_list);
	skb_queue_head_init(&tmp_list);
	lockdep_set_class(&tmp_list.lock, &qdio_out_skb_queue_key);
	for(i = 0; i < QETH_MAX_BUFFER_ELEMENTS(card); ++i){
	for(i = 0; i < QETH_MAX_BUFFER_ELEMENTS(card); ++i){
		while ((skb = skb_dequeue(&buf->skb_list))){
		while ((skb = skb_dequeue(&buf->skb_list))){
			if (vlan_tx_tag_present(skb) &&
			if (vlan_tx_tag_present(skb) &&