From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH net v1] kcm: fix zero-frag skb in frag_list on partial sendmsg error
Date: Fri, 13 Feb 2026 21:39:08 +0800 [thread overview]
Message-ID: <202602132158.nPDgggYY-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260213061232.338244-1-jiayuan.chen@linux.dev>
References: <20260213061232.338244-1-jiayuan.chen@linux.dev>
TO: Jiayuan Chen <jiayuan.chen@linux.dev>
TO: netdev@vger.kernel.org
CC: jiayuan.chen@linux.dev
CC: Jiayuan Chen <jiayuan.chen@shopee.com>
CC: syzbot+52624bdfbf2746d37d70@syzkaller.appspotmail.com
CC: Eric Dumazet <edumazet@google.com>
CC: Jakub Kicinski <kuba@kernel.org>
CC: Paolo Abeni <pabeni@redhat.com>
CC: Simon Horman <horms@kernel.org>
CC: Michal Luczaj <mhal@rbox.co>
CC: Sven Stegemann <sven@stegemann.de>
CC: Christian Brauner <brauner@kernel.org>
CC: Tom Herbert <tom@herbertland.com>
CC: linux-kernel@vger.kernel.org
Hi Jiayuan,
kernel test robot noticed the following build warnings:
[auto build test WARNING on net/main]
url: https://github.com/intel-lab-lkp/linux/commits/Jiayuan-Chen/kcm-fix-zero-frag-skb-in-frag_list-on-partial-sendmsg-error/20260213-141421
base: net/main
patch link: https://lore.kernel.org/r/20260213061232.338244-1-jiayuan.chen%40linux.dev
patch subject: [PATCH net v1] kcm: fix zero-frag skb in frag_list on partial sendmsg error
:::::: branch date: 7 hours ago
:::::: commit date: 7 hours ago
config: sparc-randconfig-r073-20260213 (https://download.01.org/0day-ci/archive/20260213/202602132158.nPDgggYY-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 11.5.0
smatch version: v0.5.0-8994-gd50c5a4c
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202602132158.nPDgggYY-lkp@intel.com/
smatch warnings:
net/kcm/kcmsock.c:945 kcm_sendmsg() error: we previously assumed 'head' could be null (see line 787)
vim +/head +945 net/kcm/kcmsock.c
ab7ac4eb9832e3 Tom Herbert 2016-03-07 747
ab7ac4eb9832e3 Tom Herbert 2016-03-07 748 static int kcm_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 749 {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 750 struct sock *sk = sock->sk;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 751 struct kcm_sock *kcm = kcm_sk(sk);
3d264f513af54f Jiayuan Chen 2026-02-13 752 struct sk_buff *skb = NULL, *head = NULL, *frag_prev = NULL;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 753 size_t copy, copied = 0;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 754 long timeo = sock_sndtimeo(sk, msg->msg_flags & MSG_DONTWAIT);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 755 int eor = (sock->type == SOCK_DGRAM) ?
ab7ac4eb9832e3 Tom Herbert 2016-03-07 756 !(msg->msg_flags & MSG_MORE) : !!(msg->msg_flags & MSG_EOR);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 757 int err = -EPIPE;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 758
807067bf014d4a Kuniyuki Iwashima 2024-08-15 759 mutex_lock(&kcm->tx_mutex);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 760 lock_sock(sk);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 761
ab7ac4eb9832e3 Tom Herbert 2016-03-07 762 /* Per tcp_sendmsg this should be in poll */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 763 sk_clear_bit(SOCKWQ_ASYNC_NOSPACE, sk);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 764
ab7ac4eb9832e3 Tom Herbert 2016-03-07 765 if (sk->sk_err)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 766 goto out_error;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 767
ab7ac4eb9832e3 Tom Herbert 2016-03-07 768 if (kcm->seq_skb) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 769 /* Previously opened message */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 770 head = kcm->seq_skb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 771 skb = kcm_tx_msg(head)->last_skb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 772 goto start;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 773 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 774
ab7ac4eb9832e3 Tom Herbert 2016-03-07 775 /* Call the sk_stream functions to manage the sndbuf mem. */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 776 if (!sk_stream_memory_free(sk)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 777 kcm_push(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 778 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 779 err = sk_stream_wait_memory(sk, &timeo);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 780 if (err)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 781 goto out_error;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 782 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 783
98e3862ca2b1ae WANG Cong 2017-02-07 784 if (msg_data_left(msg)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 785 /* New message, alloc head skb */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 786 head = alloc_skb(0, sk->sk_allocation);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 @787 while (!head) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 788 kcm_push(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 789 err = sk_stream_wait_memory(sk, &timeo);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 790 if (err)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 791 goto out_error;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 792
ab7ac4eb9832e3 Tom Herbert 2016-03-07 793 head = alloc_skb(0, sk->sk_allocation);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 794 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 795
ab7ac4eb9832e3 Tom Herbert 2016-03-07 796 skb = head;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 797
ab7ac4eb9832e3 Tom Herbert 2016-03-07 798 /* Set ip_summed to CHECKSUM_UNNECESSARY to avoid calling
ab7ac4eb9832e3 Tom Herbert 2016-03-07 799 * csum_and_copy_from_iter from skb_do_copy_data_nocache.
ab7ac4eb9832e3 Tom Herbert 2016-03-07 800 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 801 skb->ip_summed = CHECKSUM_UNNECESSARY;
98e3862ca2b1ae WANG Cong 2017-02-07 802 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 803
ab7ac4eb9832e3 Tom Herbert 2016-03-07 804 start:
ab7ac4eb9832e3 Tom Herbert 2016-03-07 805 while (msg_data_left(msg)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 806 bool merge = true;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 807 int i = skb_shinfo(skb)->nr_frags;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 808 struct page_frag *pfrag = sk_page_frag(sk);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 809
ab7ac4eb9832e3 Tom Herbert 2016-03-07 810 if (!sk_page_frag_refill(sk, pfrag))
ab7ac4eb9832e3 Tom Herbert 2016-03-07 811 goto wait_for_memory;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 812
ab7ac4eb9832e3 Tom Herbert 2016-03-07 813 if (!skb_can_coalesce(skb, i, pfrag->page,
ab7ac4eb9832e3 Tom Herbert 2016-03-07 814 pfrag->offset)) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 815 if (i == MAX_SKB_FRAGS) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 816 struct sk_buff *tskb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 817
ab7ac4eb9832e3 Tom Herbert 2016-03-07 818 tskb = alloc_skb(0, sk->sk_allocation);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 819 if (!tskb)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 820 goto wait_for_memory;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 821
ab7ac4eb9832e3 Tom Herbert 2016-03-07 822 if (head == skb)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 823 skb_shinfo(head)->frag_list = tskb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 824 else
ab7ac4eb9832e3 Tom Herbert 2016-03-07 825 skb->next = tskb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 826
3d264f513af54f Jiayuan Chen 2026-02-13 827 frag_prev = skb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 828 skb = tskb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 829 skb->ip_summed = CHECKSUM_UNNECESSARY;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 830 continue;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 831 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 832 merge = false;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 833 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 834
2b03bcae66c7b2 David Howells 2023-05-31 835 if (msg->msg_flags & MSG_SPLICE_PAGES) {
2b03bcae66c7b2 David Howells 2023-05-31 836 copy = msg_data_left(msg);
2b03bcae66c7b2 David Howells 2023-05-31 837 if (!sk_wmem_schedule(sk, copy))
2b03bcae66c7b2 David Howells 2023-05-31 838 goto wait_for_memory;
2b03bcae66c7b2 David Howells 2023-05-31 839
25489a4f556414 Michal Luczaj 2025-07-02 840 err = skb_splice_from_iter(skb, &msg->msg_iter, copy);
2b03bcae66c7b2 David Howells 2023-05-31 841 if (err < 0) {
2b03bcae66c7b2 David Howells 2023-05-31 842 if (err == -EMSGSIZE)
2b03bcae66c7b2 David Howells 2023-05-31 843 goto wait_for_memory;
2b03bcae66c7b2 David Howells 2023-05-31 844 goto out_error;
2b03bcae66c7b2 David Howells 2023-05-31 845 }
2b03bcae66c7b2 David Howells 2023-05-31 846
2b03bcae66c7b2 David Howells 2023-05-31 847 copy = err;
2b03bcae66c7b2 David Howells 2023-05-31 848 skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
2b03bcae66c7b2 David Howells 2023-05-31 849 sk_wmem_queued_add(sk, copy);
2b03bcae66c7b2 David Howells 2023-05-31 850 sk_mem_charge(sk, copy);
2b03bcae66c7b2 David Howells 2023-05-31 851
2b03bcae66c7b2 David Howells 2023-05-31 852 if (head != skb)
2b03bcae66c7b2 David Howells 2023-05-31 853 head->truesize += copy;
2b03bcae66c7b2 David Howells 2023-05-31 854 } else {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 855 copy = min_t(int, msg_data_left(msg),
ab7ac4eb9832e3 Tom Herbert 2016-03-07 856 pfrag->size - pfrag->offset);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 857 if (!sk_wmem_schedule(sk, copy))
ab7ac4eb9832e3 Tom Herbert 2016-03-07 858 goto wait_for_memory;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 859
ab7ac4eb9832e3 Tom Herbert 2016-03-07 860 err = skb_copy_to_page_nocache(sk, &msg->msg_iter, skb,
ab7ac4eb9832e3 Tom Herbert 2016-03-07 861 pfrag->page,
ab7ac4eb9832e3 Tom Herbert 2016-03-07 862 pfrag->offset,
ab7ac4eb9832e3 Tom Herbert 2016-03-07 863 copy);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 864 if (err)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 865 goto out_error;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 866
ab7ac4eb9832e3 Tom Herbert 2016-03-07 867 /* Update the skb. */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 868 if (merge) {
2b03bcae66c7b2 David Howells 2023-05-31 869 skb_frag_size_add(
2b03bcae66c7b2 David Howells 2023-05-31 870 &skb_shinfo(skb)->frags[i - 1], copy);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 871 } else {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 872 skb_fill_page_desc(skb, i, pfrag->page,
ab7ac4eb9832e3 Tom Herbert 2016-03-07 873 pfrag->offset, copy);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 874 get_page(pfrag->page);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 875 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 876
ab7ac4eb9832e3 Tom Herbert 2016-03-07 877 pfrag->offset += copy;
2b03bcae66c7b2 David Howells 2023-05-31 878 }
2b03bcae66c7b2 David Howells 2023-05-31 879
ab7ac4eb9832e3 Tom Herbert 2016-03-07 880 copied += copy;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 881 if (head != skb) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 882 head->len += copy;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 883 head->data_len += copy;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 884 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 885
ab7ac4eb9832e3 Tom Herbert 2016-03-07 886 continue;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 887
ab7ac4eb9832e3 Tom Herbert 2016-03-07 888 wait_for_memory:
ab7ac4eb9832e3 Tom Herbert 2016-03-07 889 kcm_push(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 890 err = sk_stream_wait_memory(sk, &timeo);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 891 if (err)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 892 goto out_error;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 893 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 894
ab7ac4eb9832e3 Tom Herbert 2016-03-07 895 if (eor) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 896 bool not_busy = skb_queue_empty(&sk->sk_write_queue);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 897
98e3862ca2b1ae WANG Cong 2017-02-07 898 if (head) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 899 /* Message complete, queue it on send buffer */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 900 __skb_queue_tail(&sk->sk_write_queue, head);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 901 kcm->seq_skb = NULL;
cd6e111bf5be5c Tom Herbert 2016-03-07 902 KCM_STATS_INCR(kcm->stats.tx_msgs);
98e3862ca2b1ae WANG Cong 2017-02-07 903 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 904
ab7ac4eb9832e3 Tom Herbert 2016-03-07 905 if (msg->msg_flags & MSG_BATCH) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 906 kcm->tx_wait_more = true;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 907 } else if (kcm->tx_wait_more || not_busy) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 908 err = kcm_write_msgs(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 909 if (err < 0) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 910 /* We got a hard error in write_msgs but have
ab7ac4eb9832e3 Tom Herbert 2016-03-07 911 * already queued this message. Report an error
ab7ac4eb9832e3 Tom Herbert 2016-03-07 912 * in the socket, but don't affect return value
ab7ac4eb9832e3 Tom Herbert 2016-03-07 913 * from sendmsg
ab7ac4eb9832e3 Tom Herbert 2016-03-07 914 */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 915 pr_warn("KCM: Hard failure on kcm_write_msgs\n");
ab7ac4eb9832e3 Tom Herbert 2016-03-07 916 report_csk_error(&kcm->sk, -err);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 917 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 918 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 919 } else {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 920 /* Message not complete, save state */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 921 partial_message:
cd27b96bc13841 WANG Cong 2017-02-13 922 if (head) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 923 kcm->seq_skb = head;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 924 kcm_tx_msg(head)->last_skb = skb;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 925 }
cd27b96bc13841 WANG Cong 2017-02-13 926 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 927
cd6e111bf5be5c Tom Herbert 2016-03-07 928 KCM_STATS_ADD(kcm->stats.tx_bytes, copied);
cd6e111bf5be5c Tom Herbert 2016-03-07 929
ab7ac4eb9832e3 Tom Herbert 2016-03-07 930 release_sock(sk);
807067bf014d4a Kuniyuki Iwashima 2024-08-15 931 mutex_unlock(&kcm->tx_mutex);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 932 return copied;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 933
ab7ac4eb9832e3 Tom Herbert 2016-03-07 934 out_error:
ab7ac4eb9832e3 Tom Herbert 2016-03-07 935 kcm_push(kcm);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 936
3d264f513af54f Jiayuan Chen 2026-02-13 937 /* When MAX_SKB_FRAGS was reached, a new skb was allocated and
3d264f513af54f Jiayuan Chen 2026-02-13 938 * linked into the frag_list before data copy. If the copy
3d264f513af54f Jiayuan Chen 2026-02-13 939 * subsequently failed, this skb has zero frags. Remove it from
3d264f513af54f Jiayuan Chen 2026-02-13 940 * the frag_list to prevent kcm_write_msgs from later hitting
3d264f513af54f Jiayuan Chen 2026-02-13 941 * WARN_ON(!skb_shinfo(skb)->nr_frags).
3d264f513af54f Jiayuan Chen 2026-02-13 942 */
3d264f513af54f Jiayuan Chen 2026-02-13 943 if (frag_prev && !skb_shinfo(skb)->nr_frags) {
3d264f513af54f Jiayuan Chen 2026-02-13 944 if (head == frag_prev)
3d264f513af54f Jiayuan Chen 2026-02-13 @945 skb_shinfo(head)->frag_list = NULL;
3d264f513af54f Jiayuan Chen 2026-02-13 946 else
3d264f513af54f Jiayuan Chen 2026-02-13 947 frag_prev->next = NULL;
3d264f513af54f Jiayuan Chen 2026-02-13 948 kfree_skb(skb);
3d264f513af54f Jiayuan Chen 2026-02-13 949 /* Update skb as it may be saved in partial_message via goto */
3d264f513af54f Jiayuan Chen 2026-02-13 950 skb = frag_prev;
3d264f513af54f Jiayuan Chen 2026-02-13 951 }
3d264f513af54f Jiayuan Chen 2026-02-13 952
a22730b1b4bf43 Kuniyuki Iwashima 2023-09-11 953 if (sock->type == SOCK_SEQPACKET) {
ab7ac4eb9832e3 Tom Herbert 2016-03-07 954 /* Wrote some bytes before encountering an
ab7ac4eb9832e3 Tom Herbert 2016-03-07 955 * error, return partial success.
ab7ac4eb9832e3 Tom Herbert 2016-03-07 956 */
a22730b1b4bf43 Kuniyuki Iwashima 2023-09-11 957 if (copied)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 958 goto partial_message;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 959 if (head != kcm->seq_skb)
ab7ac4eb9832e3 Tom Herbert 2016-03-07 960 kfree_skb(head);
a22730b1b4bf43 Kuniyuki Iwashima 2023-09-11 961 } else {
a22730b1b4bf43 Kuniyuki Iwashima 2023-09-11 962 kfree_skb(head);
a22730b1b4bf43 Kuniyuki Iwashima 2023-09-11 963 kcm->seq_skb = NULL;
a22730b1b4bf43 Kuniyuki Iwashima 2023-09-11 964 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 965
ab7ac4eb9832e3 Tom Herbert 2016-03-07 966 err = sk_stream_error(sk, msg->msg_flags, err);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 967
ab7ac4eb9832e3 Tom Herbert 2016-03-07 968 /* make sure we wake any epoll edge trigger waiter */
ab7ac4eb9832e3 Tom Herbert 2016-03-07 969 if (unlikely(skb_queue_len(&sk->sk_write_queue) == 0 && err == -EAGAIN))
ab7ac4eb9832e3 Tom Herbert 2016-03-07 970 sk->sk_write_space(sk);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 971
ab7ac4eb9832e3 Tom Herbert 2016-03-07 972 release_sock(sk);
807067bf014d4a Kuniyuki Iwashima 2024-08-15 973 mutex_unlock(&kcm->tx_mutex);
ab7ac4eb9832e3 Tom Herbert 2016-03-07 974 return err;
ab7ac4eb9832e3 Tom Herbert 2016-03-07 975 }
ab7ac4eb9832e3 Tom Herbert 2016-03-07 976
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2026-02-13 13:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-13 13:39 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2026-02-13 6:12 [PATCH net v1] kcm: fix zero-frag skb in frag_list on partial sendmsg error Jiayuan Chen
2026-02-17 11:52 ` Paolo Abeni
2026-02-19 1:40 ` Jiayuan Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202602132158.nPDgggYY-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.