From: kernel test robot <lkp@intel.com>
To: Jeffrey Ji <jeffreyjilinux@gmail.com>,
Eric Dumazet <edumazet@google.com>,
"David S . Miller" <davem@davemloft.net>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
Brian Vazquez <brianvv@google.com>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
jeffreyjilinux@gmail.com, jeffreyji <jeffreyji@google.com>
Subject: Re: [PATCH net-next] net-core: add InMacErrors counter
Date: Tue, 25 Jan 2022 06:24:41 +0800 [thread overview]
Message-ID: <202201250416.QEl2tmqY-lkp@intel.com> (raw)
In-Reply-To: <20220122000301.1872828-1-jeffreyji@google.com>
Hi Jeffrey,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Jeffrey-Ji/net-core-add-InMacErrors-counter/20220122-080455
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 8aaaf2f3af2ae212428f4db1af34214225f5cec3
config: x86_64-randconfig-a001-20220117 (https://download.01.org/0day-ci/archive/20220125/202201250416.QEl2tmqY-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 7b3d30728816403d1fd73cc5082e9fb761262bce)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/f8ea346d278c116f830459bae2a910fdc5e96a35
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jeffrey-Ji/net-core-add-InMacErrors-counter/20220122-080455
git checkout f8ea346d278c116f830459bae2a910fdc5e96a35
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash net/ipv6/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> net/ipv6/ip6_input.c:153:24: warning: variable 'idev' is uninitialized when used here [-Wuninitialized]
__IP6_INC_STATS(net, idev, IPSTATS_MIB_INMACERRORS);
^~~~
include/net/ipv6.h:256:26: note: expanded from macro '__IP6_INC_STATS'
_DEVINC(net, ipv6, __, idev, field)
^~~~
include/net/ipv6.h:211:29: note: expanded from macro '_DEVINC'
struct inet6_dev *_idev = (idev); \
^~~~
net/ipv6/ip6_input.c:150:24: note: initialize the variable 'idev' to silence this warning
struct inet6_dev *idev;
^
= NULL
1 warning generated.
vim +/idev +153 net/ipv6/ip6_input.c
144
145 static struct sk_buff *ip6_rcv_core(struct sk_buff *skb, struct net_device *dev,
146 struct net *net)
147 {
148 const struct ipv6hdr *hdr;
149 u32 pkt_len;
150 struct inet6_dev *idev;
151
152 if (skb->pkt_type == PACKET_OTHERHOST) {
> 153 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INMACERRORS);
154 kfree_skb(skb);
155 return NULL;
156 }
157
158 rcu_read_lock();
159
160 idev = __in6_dev_get(skb->dev);
161
162 __IP6_UPD_PO_STATS(net, idev, IPSTATS_MIB_IN, skb->len);
163
164 if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL ||
165 !idev || unlikely(idev->cnf.disable_ipv6)) {
166 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INDISCARDS);
167 goto drop;
168 }
169
170 memset(IP6CB(skb), 0, sizeof(struct inet6_skb_parm));
171
172 /*
173 * Store incoming device index. When the packet will
174 * be queued, we cannot refer to skb->dev anymore.
175 *
176 * BTW, when we send a packet for our own local address on a
177 * non-loopback interface (e.g. ethX), it is being delivered
178 * via the loopback interface (lo) here; skb->dev = loopback_dev.
179 * It, however, should be considered as if it is being
180 * arrived via the sending interface (ethX), because of the
181 * nature of scoping architecture. --yoshfuji
182 */
183 IP6CB(skb)->iif = skb_valid_dst(skb) ? ip6_dst_idev(skb_dst(skb))->dev->ifindex : dev->ifindex;
184
185 if (unlikely(!pskb_may_pull(skb, sizeof(*hdr))))
186 goto err;
187
188 hdr = ipv6_hdr(skb);
189
190 if (hdr->version != 6)
191 goto err;
192
193 __IP6_ADD_STATS(net, idev,
194 IPSTATS_MIB_NOECTPKTS +
195 (ipv6_get_dsfield(hdr) & INET_ECN_MASK),
196 max_t(unsigned short, 1, skb_shinfo(skb)->gso_segs));
197 /*
198 * RFC4291 2.5.3
199 * The loopback address must not be used as the source address in IPv6
200 * packets that are sent outside of a single node. [..]
201 * A packet received on an interface with a destination address
202 * of loopback must be dropped.
203 */
204 if ((ipv6_addr_loopback(&hdr->saddr) ||
205 ipv6_addr_loopback(&hdr->daddr)) &&
206 !(dev->flags & IFF_LOOPBACK) &&
207 !netif_is_l3_master(dev))
208 goto err;
209
210 /* RFC4291 Errata ID: 3480
211 * Interface-Local scope spans only a single interface on a
212 * node and is useful only for loopback transmission of
213 * multicast. Packets with interface-local scope received
214 * from another node must be discarded.
215 */
216 if (!(skb->pkt_type == PACKET_LOOPBACK ||
217 dev->flags & IFF_LOOPBACK) &&
218 ipv6_addr_is_multicast(&hdr->daddr) &&
219 IPV6_ADDR_MC_SCOPE(&hdr->daddr) == 1)
220 goto err;
221
222 /* If enabled, drop unicast packets that were encapsulated in link-layer
223 * multicast or broadcast to protected against the so-called "hole-196"
224 * attack in 802.11 wireless.
225 */
226 if (!ipv6_addr_is_multicast(&hdr->daddr) &&
227 (skb->pkt_type == PACKET_BROADCAST ||
228 skb->pkt_type == PACKET_MULTICAST) &&
229 idev->cnf.drop_unicast_in_l2_multicast)
230 goto err;
231
232 /* RFC4291 2.7
233 * Nodes must not originate a packet to a multicast address whose scope
234 * field contains the reserved value 0; if such a packet is received, it
235 * must be silently dropped.
236 */
237 if (ipv6_addr_is_multicast(&hdr->daddr) &&
238 IPV6_ADDR_MC_SCOPE(&hdr->daddr) == 0)
239 goto err;
240
241 /*
242 * RFC4291 2.7
243 * Multicast addresses must not be used as source addresses in IPv6
244 * packets or appear in any Routing header.
245 */
246 if (ipv6_addr_is_multicast(&hdr->saddr))
247 goto err;
248
249 skb->transport_header = skb->network_header + sizeof(*hdr);
250 IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr);
251
252 pkt_len = ntohs(hdr->payload_len);
253
254 /* pkt_len may be zero if Jumbo payload option is present */
255 if (pkt_len || hdr->nexthdr != NEXTHDR_HOP) {
256 if (pkt_len + sizeof(struct ipv6hdr) > skb->len) {
257 __IP6_INC_STATS(net,
258 idev, IPSTATS_MIB_INTRUNCATEDPKTS);
259 goto drop;
260 }
261 if (pskb_trim_rcsum(skb, pkt_len + sizeof(struct ipv6hdr))) {
262 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INHDRERRORS);
263 goto drop;
264 }
265 hdr = ipv6_hdr(skb);
266 }
267
268 if (hdr->nexthdr == NEXTHDR_HOP) {
269 if (ipv6_parse_hopopts(skb) < 0) {
270 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INHDRERRORS);
271 rcu_read_unlock();
272 return NULL;
273 }
274 }
275
276 rcu_read_unlock();
277
278 /* Must drop socket now because of tproxy. */
279 if (!skb_sk_is_prefetched(skb))
280 skb_orphan(skb);
281
282 return skb;
283 err:
284 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INHDRERRORS);
285 drop:
286 rcu_read_unlock();
287 kfree_skb(skb);
288 return NULL;
289 }
290
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH net-next] net-core: add InMacErrors counter
Date: Tue, 25 Jan 2022 06:24:41 +0800 [thread overview]
Message-ID: <202201250416.QEl2tmqY-lkp@intel.com> (raw)
In-Reply-To: <20220122000301.1872828-1-jeffreyji@google.com>
[-- Attachment #1: Type: text/plain, Size: 7838 bytes --]
Hi Jeffrey,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Jeffrey-Ji/net-core-add-InMacErrors-counter/20220122-080455
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 8aaaf2f3af2ae212428f4db1af34214225f5cec3
config: x86_64-randconfig-a001-20220117 (https://download.01.org/0day-ci/archive/20220125/202201250416.QEl2tmqY-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 7b3d30728816403d1fd73cc5082e9fb761262bce)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/f8ea346d278c116f830459bae2a910fdc5e96a35
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jeffrey-Ji/net-core-add-InMacErrors-counter/20220122-080455
git checkout f8ea346d278c116f830459bae2a910fdc5e96a35
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash net/ipv6/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> net/ipv6/ip6_input.c:153:24: warning: variable 'idev' is uninitialized when used here [-Wuninitialized]
__IP6_INC_STATS(net, idev, IPSTATS_MIB_INMACERRORS);
^~~~
include/net/ipv6.h:256:26: note: expanded from macro '__IP6_INC_STATS'
_DEVINC(net, ipv6, __, idev, field)
^~~~
include/net/ipv6.h:211:29: note: expanded from macro '_DEVINC'
struct inet6_dev *_idev = (idev); \
^~~~
net/ipv6/ip6_input.c:150:24: note: initialize the variable 'idev' to silence this warning
struct inet6_dev *idev;
^
= NULL
1 warning generated.
vim +/idev +153 net/ipv6/ip6_input.c
144
145 static struct sk_buff *ip6_rcv_core(struct sk_buff *skb, struct net_device *dev,
146 struct net *net)
147 {
148 const struct ipv6hdr *hdr;
149 u32 pkt_len;
150 struct inet6_dev *idev;
151
152 if (skb->pkt_type == PACKET_OTHERHOST) {
> 153 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INMACERRORS);
154 kfree_skb(skb);
155 return NULL;
156 }
157
158 rcu_read_lock();
159
160 idev = __in6_dev_get(skb->dev);
161
162 __IP6_UPD_PO_STATS(net, idev, IPSTATS_MIB_IN, skb->len);
163
164 if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL ||
165 !idev || unlikely(idev->cnf.disable_ipv6)) {
166 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INDISCARDS);
167 goto drop;
168 }
169
170 memset(IP6CB(skb), 0, sizeof(struct inet6_skb_parm));
171
172 /*
173 * Store incoming device index. When the packet will
174 * be queued, we cannot refer to skb->dev anymore.
175 *
176 * BTW, when we send a packet for our own local address on a
177 * non-loopback interface (e.g. ethX), it is being delivered
178 * via the loopback interface (lo) here; skb->dev = loopback_dev.
179 * It, however, should be considered as if it is being
180 * arrived via the sending interface (ethX), because of the
181 * nature of scoping architecture. --yoshfuji
182 */
183 IP6CB(skb)->iif = skb_valid_dst(skb) ? ip6_dst_idev(skb_dst(skb))->dev->ifindex : dev->ifindex;
184
185 if (unlikely(!pskb_may_pull(skb, sizeof(*hdr))))
186 goto err;
187
188 hdr = ipv6_hdr(skb);
189
190 if (hdr->version != 6)
191 goto err;
192
193 __IP6_ADD_STATS(net, idev,
194 IPSTATS_MIB_NOECTPKTS +
195 (ipv6_get_dsfield(hdr) & INET_ECN_MASK),
196 max_t(unsigned short, 1, skb_shinfo(skb)->gso_segs));
197 /*
198 * RFC4291 2.5.3
199 * The loopback address must not be used as the source address in IPv6
200 * packets that are sent outside of a single node. [..]
201 * A packet received on an interface with a destination address
202 * of loopback must be dropped.
203 */
204 if ((ipv6_addr_loopback(&hdr->saddr) ||
205 ipv6_addr_loopback(&hdr->daddr)) &&
206 !(dev->flags & IFF_LOOPBACK) &&
207 !netif_is_l3_master(dev))
208 goto err;
209
210 /* RFC4291 Errata ID: 3480
211 * Interface-Local scope spans only a single interface on a
212 * node and is useful only for loopback transmission of
213 * multicast. Packets with interface-local scope received
214 * from another node must be discarded.
215 */
216 if (!(skb->pkt_type == PACKET_LOOPBACK ||
217 dev->flags & IFF_LOOPBACK) &&
218 ipv6_addr_is_multicast(&hdr->daddr) &&
219 IPV6_ADDR_MC_SCOPE(&hdr->daddr) == 1)
220 goto err;
221
222 /* If enabled, drop unicast packets that were encapsulated in link-layer
223 * multicast or broadcast to protected against the so-called "hole-196"
224 * attack in 802.11 wireless.
225 */
226 if (!ipv6_addr_is_multicast(&hdr->daddr) &&
227 (skb->pkt_type == PACKET_BROADCAST ||
228 skb->pkt_type == PACKET_MULTICAST) &&
229 idev->cnf.drop_unicast_in_l2_multicast)
230 goto err;
231
232 /* RFC4291 2.7
233 * Nodes must not originate a packet to a multicast address whose scope
234 * field contains the reserved value 0; if such a packet is received, it
235 * must be silently dropped.
236 */
237 if (ipv6_addr_is_multicast(&hdr->daddr) &&
238 IPV6_ADDR_MC_SCOPE(&hdr->daddr) == 0)
239 goto err;
240
241 /*
242 * RFC4291 2.7
243 * Multicast addresses must not be used as source addresses in IPv6
244 * packets or appear in any Routing header.
245 */
246 if (ipv6_addr_is_multicast(&hdr->saddr))
247 goto err;
248
249 skb->transport_header = skb->network_header + sizeof(*hdr);
250 IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr);
251
252 pkt_len = ntohs(hdr->payload_len);
253
254 /* pkt_len may be zero if Jumbo payload option is present */
255 if (pkt_len || hdr->nexthdr != NEXTHDR_HOP) {
256 if (pkt_len + sizeof(struct ipv6hdr) > skb->len) {
257 __IP6_INC_STATS(net,
258 idev, IPSTATS_MIB_INTRUNCATEDPKTS);
259 goto drop;
260 }
261 if (pskb_trim_rcsum(skb, pkt_len + sizeof(struct ipv6hdr))) {
262 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INHDRERRORS);
263 goto drop;
264 }
265 hdr = ipv6_hdr(skb);
266 }
267
268 if (hdr->nexthdr == NEXTHDR_HOP) {
269 if (ipv6_parse_hopopts(skb) < 0) {
270 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INHDRERRORS);
271 rcu_read_unlock();
272 return NULL;
273 }
274 }
275
276 rcu_read_unlock();
277
278 /* Must drop socket now because of tproxy. */
279 if (!skb_sk_is_prefetched(skb))
280 skb_orphan(skb);
281
282 return skb;
283 err:
284 __IP6_INC_STATS(net, idev, IPSTATS_MIB_INHDRERRORS);
285 drop:
286 rcu_read_unlock();
287 kfree_skb(skb);
288 return NULL;
289 }
290
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
next prev parent reply other threads:[~2022-01-24 22:25 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-22 0:03 [PATCH net-next] net-core: add InMacErrors counter Jeffrey Ji
2022-01-22 3:40 ` Jakub Kicinski
2022-01-24 17:13 ` Brian Vazquez
2022-01-24 17:29 ` Jakub Kicinski
2022-01-24 17:39 ` Eric Dumazet
2022-01-24 17:46 ` Jakub Kicinski
2022-01-24 20:19 ` Cong Wang
2022-01-24 20:21 ` Eric Dumazet
2022-01-24 22:24 ` kernel test robot [this message]
2022-01-24 22:24 ` kernel test robot
2022-01-24 22:24 ` kernel test robot
2022-01-24 22:24 ` kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2022-01-22 7:10 kernel test robot
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=202201250416.QEl2tmqY-lkp@intel.com \
--to=lkp@intel.com \
--cc=brianvv@google.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jeffreyji@google.com \
--cc=jeffreyjilinux@gmail.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=netdev@vger.kernel.org \
/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.