Bug 214339
Summary: | sendmsg return value may be positive while send errors | ||
---|---|---|---|
Product: | Networking | Reporter: | liuxf (1031265646) |
Component: | IPV4 | Assignee: | Stephen Hemminger (stephen) |
Status: | NEW --- | ||
Severity: | normal | CC: | 1031265646 |
Priority: | P1 | ||
Hardware: | x86-64 | ||
OS: | Linux | ||
Kernel Version: | 5.14.7 | Subsystem: | |
Regression: | No | Bisected commit-id: |
Description
liuxf
2021-09-07 09:23:54 UTC
what's more, when packet processed by tc module, pfifo_fast_enqueue is likely failed, then NET_XMIT_DROP(0x01) was returned, which is also result to a failed send operation was regard as a success one by sendmsg do_append_data: up->len += ulen; err = ip_append_data(sk, fl4, getfrag, msg, ulen, sizeof(struct udphdr), &ipc, &rt, corkreq ? msg->msg_flags|MSG_MORE : msg->msg_flags); if (err) udp_flush_pending_frames(sk); else if (!corkreq) err = udp_push_pending_frames(sk); //err may be zero here too else if (unlikely(skb_queue_empty(&sk->sk_write_queue))) up->pending = 0; release_sock(sk); out: ip_rt_put(rt); out_free: if (free) kfree(ipc.opt); if (!err) return len; |