Message ID | CACSApvanT0ZRFH0ZBDLqygkH6Ue_CCVQBzVL9fCmZE_BndYEog@mail.gmail.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
Hi! > >> Thank you for the confirmation. Could you please try the following > >> patch to see if it fixes your issue? > > > > Does not seem to help, I still got the same bussy loop. > > Thank you for trying the patch. Unfortunately, I can't reproduce on my > machines here.Would you humor me with another one? Thank you! Still does not help. I've modified the ping binary (on the top of you patch that reads the error queue) to dump the error structure. It seems to repeatedly produce (until I plug the cable back): ee_errno = 113 ee_origin = 2 ee_type = 3 ee_code = 1 ee_info = 0 ee_data = 0 So we get EHOSTUNREACH on SO_EE_ORIGIN_ICMP.
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 5a726161f4e4..49207298fcea 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3742,7 +3742,8 @@ EXPORT_SYMBOL(sock_queue_err_skb); static bool is_icmp_err_skb(const struct sk_buff *skb) { return skb && (SKB_EXT_ERR(skb)->ee.ee_origin == SO_EE_ORIGIN_ICMP || - SKB_EXT_ERR(skb)->ee.ee_origin == SO_EE_ORIGIN_ICMP6); + SKB_EXT_ERR(skb)->ee.ee_origin == SO_EE_ORIGIN_ICMP6 || + SKB_EXT_ERR(skb)->ee.ee_origin == SO_EE_ORIGIN_LOCAL); } struct sk_buff *sock_dequeue_err_skb(struct sock *sk)