[NET]: Remove lockdep_set_class() call from skb_queue_head_init().

The skb_queue_head_init() function is used both in drivers for private use
and in the core networking code. The usage models are vastly set of
functions that is only softirq safe; while the driver usage tends to be
more limited to a few hardirq safe accessor functions. Rather than
annotating all 133+ driver usages, for now just split this lock into a per
queue class. This change is obviously safe and probably should make
2.6.18.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Arjan van de Ven and committed by David S. Miller 76f10ad0 dafee490

+8 -1
+8 -1
include/linux/skbuff.h
··· 606 606 607 607 extern struct lock_class_key skb_queue_lock_key; 608 608 609 + /* 610 + * This function creates a split out lock class for each invocation; 611 + * this is needed for now since a whole lot of users of the skb-queue 612 + * infrastructure in drivers have different locking usage (in hardirq) 613 + * than the networking core (in softirq only). In the long run either the 614 + * network layer or drivers should need annotation to consolidate the 615 + * main types of usage into 3 classes. 616 + */ 609 617 static inline void skb_queue_head_init(struct sk_buff_head *list) 610 618 { 611 619 spin_lock_init(&list->lock); 612 - lockdep_set_class(&list->lock, &skb_queue_lock_key); 613 620 list->prev = list->next = (struct sk_buff *)list; 614 621 list->qlen = 0; 615 622 }