From: kbuild test robot <lkp@intel.com>
To: zhong jiang <zhongjiang@huawei.com>
Cc: kbuild-all@01.org, davem@davemloft.net, edumazet@google.com,
kuznet@ms2.inr.ac.ru, yoshfuji@linux-ipv6.org,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] net: ipv4: Use BUG_ON directly instead of a if condition followed by BUG
Date: Tue, 11 Sep 2018 04:23:10 +0800 [thread overview]
Message-ID: <201809110441.PjWNmM0r%fengguang.wu@intel.com> (raw)
In-Reply-To: <1536590282-23899-1-git-send-email-zhongjiang@huawei.com>
[-- Attachment #1: Type: text/plain, Size: 5317 bytes --]
Hi zhong,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on net/master]
[also build test ERROR on v4.19-rc3 next-20180910]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/zhong-jiang/net-ipv4-Use-BUG_ON-directly-instead-of-a-if-condition-followed-by-BUG/20180911-034152
config: x86_64-randconfig-x009-201836 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
net//ipv4/tcp_input.c: In function 'tcp_collapse':
>> net//ipv4/tcp_input.c:4925:35: error: macro "BUG" passed 1 arguments, but takes just 0
skb_put(nskb, size), size));
^
>> net//ipv4/tcp_input.c:4924:5: error: 'BUG' undeclared (first use in this function)
BUG(skb_copy_bits(skb, offset,
^~~
net//ipv4/tcp_input.c:4924:5: note: each undeclared identifier is reported only once for each function it appears in
net//ipv4/tcp_input.c: In function 'tcp_urg':
net//ipv4/tcp_input.c:5318:40: error: macro "BUG" passed 1 arguments, but takes just 0
BUG(skb_copy_bits(skb, ptr, &tmp, 1));
^
net//ipv4/tcp_input.c:5318:4: error: 'BUG' undeclared (first use in this function)
BUG(skb_copy_bits(skb, ptr, &tmp, 1));
^~~
vim +/BUG +4925 net//ipv4/tcp_input.c
4838
4839 /* Collapse contiguous sequence of skbs head..tail with
4840 * sequence numbers start..end.
4841 *
4842 * If tail is NULL, this means until the end of the queue.
4843 *
4844 * Segments with FIN/SYN are not collapsed (only because this
4845 * simplifies code)
4846 */
4847 static void
4848 tcp_collapse(struct sock *sk, struct sk_buff_head *list, struct rb_root *root,
4849 struct sk_buff *head, struct sk_buff *tail, u32 start, u32 end)
4850 {
4851 struct sk_buff *skb = head, *n;
4852 struct sk_buff_head tmp;
4853 bool end_of_skbs;
4854
4855 /* First, check that queue is collapsible and find
4856 * the point where collapsing can be useful.
4857 */
4858 restart:
4859 for (end_of_skbs = true; skb != NULL && skb != tail; skb = n) {
4860 n = tcp_skb_next(skb, list);
4861
4862 /* No new bits? It is possible on ofo queue. */
4863 if (!before(start, TCP_SKB_CB(skb)->end_seq)) {
4864 skb = tcp_collapse_one(sk, skb, list, root);
4865 if (!skb)
4866 break;
4867 goto restart;
4868 }
4869
4870 /* The first skb to collapse is:
4871 * - not SYN/FIN and
4872 * - bloated or contains data before "start" or
4873 * overlaps to the next one.
4874 */
4875 if (!(TCP_SKB_CB(skb)->tcp_flags & (TCPHDR_SYN | TCPHDR_FIN)) &&
4876 (tcp_win_from_space(sk, skb->truesize) > skb->len ||
4877 before(TCP_SKB_CB(skb)->seq, start))) {
4878 end_of_skbs = false;
4879 break;
4880 }
4881
4882 if (n && n != tail &&
4883 TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(n)->seq) {
4884 end_of_skbs = false;
4885 break;
4886 }
4887
4888 /* Decided to skip this, advance start seq. */
4889 start = TCP_SKB_CB(skb)->end_seq;
4890 }
4891 if (end_of_skbs ||
4892 (TCP_SKB_CB(skb)->tcp_flags & (TCPHDR_SYN | TCPHDR_FIN)))
4893 return;
4894
4895 __skb_queue_head_init(&tmp);
4896
4897 while (before(start, end)) {
4898 int copy = min_t(int, SKB_MAX_ORDER(0, 0), end - start);
4899 struct sk_buff *nskb;
4900
4901 nskb = alloc_skb(copy, GFP_ATOMIC);
4902 if (!nskb)
4903 break;
4904
4905 memcpy(nskb->cb, skb->cb, sizeof(skb->cb));
4906 #ifdef CONFIG_TLS_DEVICE
4907 nskb->decrypted = skb->decrypted;
4908 #endif
4909 TCP_SKB_CB(nskb)->seq = TCP_SKB_CB(nskb)->end_seq = start;
4910 if (list)
4911 __skb_queue_before(list, skb, nskb);
4912 else
4913 __skb_queue_tail(&tmp, nskb); /* defer rbtree insertion */
4914 skb_set_owner_r(nskb, sk);
4915
4916 /* Copy data, releasing collapsed skbs. */
4917 while (copy > 0) {
4918 int offset = start - TCP_SKB_CB(skb)->seq;
4919 int size = TCP_SKB_CB(skb)->end_seq - start;
4920
4921 BUG_ON(offset < 0);
4922 if (size > 0) {
4923 size = min(copy, size);
> 4924 BUG(skb_copy_bits(skb, offset,
> 4925 skb_put(nskb, size), size));
4926 TCP_SKB_CB(nskb)->end_seq += size;
4927 copy -= size;
4928 start += size;
4929 }
4930 if (!before(start, TCP_SKB_CB(skb)->end_seq)) {
4931 skb = tcp_collapse_one(sk, skb, list, root);
4932 if (!skb ||
4933 skb == tail ||
4934 (TCP_SKB_CB(skb)->tcp_flags & (TCPHDR_SYN | TCPHDR_FIN)))
4935 goto end;
4936 #ifdef CONFIG_TLS_DEVICE
4937 if (skb->decrypted != nskb->decrypted)
4938 goto end;
4939 #endif
4940 }
4941 }
4942 }
4943 end:
4944 skb_queue_walk_safe(&tmp, skb, n)
4945 tcp_rbtree_insert(root, skb);
4946 }
4947
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 27230 bytes --]
next prev parent reply other threads:[~2018-09-10 20:24 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-10 14:38 [PATCH] net: ipv4: Use BUG_ON directly instead of a if condition followed by BUG zhong jiang
2018-09-10 15:39 ` Jiri Benc
2018-09-11 1:12 ` zhong jiang
2018-09-10 20:23 ` kbuild test robot [this message]
2018-09-10 21:20 ` kbuild test robot
2018-09-11 8:51 ` Sergei Shtylyov
2018-09-11 8:59 ` zhong jiang
2018-09-11 9:11 ` Sergei Shtylyov
2018-09-11 9:19 ` zhong jiang
2018-09-11 9:33 ` Sergei Shtylyov
2018-09-12 6:54 ` David Miller
2018-09-12 13:25 ` zhong jiang
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=201809110441.PjWNmM0r%fengguang.wu@intel.com \
--to=lkp@intel.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kbuild-all@01.org \
--cc=kuznet@ms2.inr.ac.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=yoshfuji@linux-ipv6.org \
--cc=zhongjiang@huawei.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).