From: Ming Lei <tom.leiming@xxxxxxxxx> Date: Sat, 21 Apr 2012 09:49:51 +0800 > I see the problem, so looks skb_queue_walk_safe is not safe. > I don' know why the 2nd ' tmp = skb->next' in skb_queue_walk_safe > is needed and it may become unsafe if skb is freed during current loop. I can't see what the problem is, skb_queue_walk_safe() is perfect and does exactly what it advertises to do. If 'skb' is unlinked inside of an skb_queue_walk_safe() loop, that's fine, because we won't touch 'skb' in the loop iteration tail code. Instead, before the loop contents, we pre-fetch skb->next into 'tmp' and then at the end we move 'skb' forward by simply assigning 'tmp'. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html