All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/usb/gadget/function/u_ether.c:233:13: warning: Either the condition 'if(skb)' is redundant or there is possible null pointer dereference: skb.
@ 2020-12-30 21:13 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-12-30 21:13 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 11438 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Masahiro Yamada <masahiroy@kernel.org>
CC: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   139711f033f636cc78b6aaf7363252241b9698ef
commit: df8df5e4bc37e39010cfdf5d50cf726fe08aae5b usb: get rid of 'choice' for legacy gadget drivers
date:   10 months ago
:::::: branch date: 21 hours ago
:::::: commit date: 10 months ago
compiler: xtensa-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/usb/gadget/function/u_ether.c:233:13: warning: Either the condition 'if(skb)' is redundant or there is possible null pointer dereference: skb. [nullPointerRedundantCheck]
    req->buf = skb->data;
               ^
   drivers/usb/gadget/function/u_ether.c:244:6: note: Assuming that condition 'if(skb)' is not redundant
     if (skb)
        ^
   drivers/usb/gadget/function/u_ether.c:233:13: note: Null pointer dereference
    req->buf = skb->data;
               ^

vim +233 drivers/usb/gadget/function/u_ether.c

2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  173  
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  174  static int
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  175  rx_submit(struct eth_dev *dev, struct usb_request *req, gfp_t gfp_flags)
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  176  {
387f869d2579e37 drivers/usb/gadget/function/u_ether.c Felipe Balbi          2017-03-22  177  	struct usb_gadget *g = dev->gadget;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  178  	struct sk_buff	*skb;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  179  	int		retval = -ENOMEM;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  180  	size_t		size = 0;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  181  	struct usb_ep	*out;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  182  	unsigned long	flags;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  183  
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  184  	spin_lock_irqsave(&dev->lock, flags);
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  185  	if (dev->port_usb)
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  186  		out = dev->port_usb->out_ep;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  187  	else
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  188  		out = NULL;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  189  
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  190  	if (!out)
d29fcf7078bc8be drivers/usb/gadget/function/u_ether.c Kiruthika Varadarajan 2019-06-18  191  	{
d29fcf7078bc8be drivers/usb/gadget/function/u_ether.c Kiruthika Varadarajan 2019-06-18  192  		spin_unlock_irqrestore(&dev->lock, flags);
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  193  		return -ENOTCONN;
d29fcf7078bc8be drivers/usb/gadget/function/u_ether.c Kiruthika Varadarajan 2019-06-18  194  	}
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  195  
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  196  	/* Padding up to RX_EXTRA handles minor disagreements with host.
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  197  	 * Normally we use the USB "terminate on short read" convention;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  198  	 * so allow up to (N*maxpacket), since that memory is normally
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  199  	 * already allocated.  Some hardware doesn't deal well with short
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  200  	 * reads (e.g. DMA must be N*maxpacket), so for now don't trim a
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  201  	 * byte off the end (to force hardware errors on overflow).
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  202  	 *
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  203  	 * RNDIS uses internal framing, and explicitly allows senders to
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  204  	 * pad to end-of-packet.  That's potentially nice for speed, but
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  205  	 * means receivers can't recover lost synch on their own (because
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  206  	 * new packets don't only start after a short RX).
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  207  	 */
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  208  	size += sizeof(struct ethhdr) + dev->net->mtu + RX_EXTRA;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  209  	size += dev->port_usb->header_len;
387f869d2579e37 drivers/usb/gadget/function/u_ether.c Felipe Balbi          2017-03-22  210  
387f869d2579e37 drivers/usb/gadget/function/u_ether.c Felipe Balbi          2017-03-22  211  	if (g->quirk_ep_out_aligned_size) {
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  212  		size += out->maxpacket - 1;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  213  		size -= size % out->maxpacket;
387f869d2579e37 drivers/usb/gadget/function/u_ether.c Felipe Balbi          2017-03-22  214  	}
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  215  
5c1168dbc508282 drivers/usb/gadget/u_ether.c          Yauheni Kaliuta       2010-12-08  216  	if (dev->port_usb->is_fixed)
45d1b7ae205e39e drivers/usb/gadget/u_ether.c          Stephen Hemminger     2011-03-01  217  		size = max_t(size_t, size, dev->port_usb->fixed_out_len);
d29fcf7078bc8be drivers/usb/gadget/function/u_ether.c Kiruthika Varadarajan 2019-06-18  218  	spin_unlock_irqrestore(&dev->lock, flags);
5c1168dbc508282 drivers/usb/gadget/u_ether.c          Yauheni Kaliuta       2010-12-08  219  
18d4689643b08c6 drivers/usb/gadget/function/u_ether.c Torsten Polle         2016-09-19  220  	skb = __netdev_alloc_skb(dev->net, size + NET_IP_ALIGN, gfp_flags);
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  221  	if (skb == NULL) {
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  222  		DBG(dev, "no rx skb\n");
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  223  		goto enomem;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  224  	}
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  225  
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  226  	/* Some platforms perform better when IP packets are aligned,
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  227  	 * but on at least one, checksumming fails otherwise.  Note:
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  228  	 * RNDIS headers involve variable numbers of LE32 values.
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  229  	 */
05f6b0ff68429bb drivers/usb/gadget/function/u_ether.c Yoshihiro Shimoda     2016-08-22  230  	if (likely(!dev->no_skb_reserve))
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  231  		skb_reserve(skb, NET_IP_ALIGN);
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  232  
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19 @233  	req->buf = skb->data;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  234  	req->length = size;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  235  	req->complete = rx_complete;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  236  	req->context = skb;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  237  
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  238  	retval = usb_ep_queue(out, req, gfp_flags);
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  239  	if (retval == -ENOMEM)
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  240  enomem:
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  241  		defer_kevent(dev, WORK_RX_MEMORY);
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  242  	if (retval) {
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  243  		DBG(dev, "rx submit --> %d\n", retval);
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  244  		if (skb)
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  245  			dev_kfree_skb_any(skb);
9189a330936fe05 drivers/usb/gadget/u_ether.c          Felipe Balbi          2014-04-21  246  		spin_lock_irqsave(&dev->req_lock, flags);
9189a330936fe05 drivers/usb/gadget/u_ether.c          Felipe Balbi          2014-04-21  247  		list_add(&req->list, &dev->rx_reqs);
9189a330936fe05 drivers/usb/gadget/u_ether.c          Felipe Balbi          2014-04-21  248  		spin_unlock_irqrestore(&dev->req_lock, flags);
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  249  	}
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  250  	return retval;
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  251  }
2b3d942c4878084 drivers/usb/gadget/u_ether.c          David Brownell        2008-06-19  252  

:::::: The code at line 233 was first introduced by commit
:::::: 2b3d942c4878084a37991a65e66512c02b8fa2ad usb ethernet gadget: split out network core

:::::: TO: David Brownell <dbrownell@users.sourceforge.net>
:::::: CC: Greg Kroah-Hartman <gregkh@suse.de>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-12-30 21:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-30 21:13 drivers/usb/gadget/function/u_ether.c:233:13: warning: Either the condition 'if(skb)' is redundant or there is possible null pointer dereference: skb kernel test robot

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.