netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next] vmxnet3: set netdev parant device before calling netdev_info
@ 2011-07-21  2:01 Shreyas Bhatewara
  2011-07-21  3:06 ` [Pv-drivers] " Scott Goldman
  2011-07-22  4:34 ` David Miller
  0 siblings, 2 replies; 5+ messages in thread
From: Shreyas Bhatewara @ 2011-07-21  2:01 UTC (permalink / raw)
  To: netdev; +Cc: pv-drivers


Parent device for netdev should be set before netdev_info() can be called
otherwise there is a NULL pointer dereference and probe() fails.

Signed-off-by: Shreyas N Bhatewara <sbhatewara@vmware.com>

--

diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
index 009277e..1a8cc5b 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -2993,6 +2993,7 @@ vmxnet3_probe_device(struct pci_dev *pdev,
 		goto err_ver;
 	}
 
+	SET_NETDEV_DEV(netdev, &pdev->dev);
 	vmxnet3_declare_features(adapter, dma64);
 
 	adapter->dev_number = atomic_read(&devices_found);
@@ -3038,7 +3039,6 @@ vmxnet3_probe_device(struct pci_dev *pdev,
 	netif_set_real_num_tx_queues(adapter->netdev, adapter->num_tx_queues);
 	netif_set_real_num_rx_queues(adapter->netdev, adapter->num_rx_queues);
 
-	SET_NETDEV_DEV(netdev, &pdev->dev);
 	err = register_netdev(netdev);
 
 	if (err) {

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* RE: [Pv-drivers] [PATCH net-next] vmxnet3: set netdev parant device before calling netdev_info
  2011-07-21  2:01 [PATCH net-next] vmxnet3: set netdev parant device before calling netdev_info Shreyas Bhatewara
@ 2011-07-21  3:06 ` Scott Goldman
  2011-07-21  3:49   ` Joe Perches
  2011-07-22  4:34 ` David Miller
  1 sibling, 1 reply; 5+ messages in thread
From: Scott Goldman @ 2011-07-21  3:06 UTC (permalink / raw)
  To: Shreyas Bhatewara, netdev@vger.kernel.org; +Cc: pv-drivers@vmware.com

> Parent device for netdev should be set before netdev_info() can be called
> otherwise there is a NULL pointer dereference and probe() fails.

> Signed-off-by: Shreyas N Bhatewara <sbhatewara@vmware.com>
Signed-off-by: Scott J. Goldman <scottjg@vmware.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [Pv-drivers] [PATCH net-next] vmxnet3: set netdev parant device before calling netdev_info
  2011-07-21  3:06 ` [Pv-drivers] " Scott Goldman
@ 2011-07-21  3:49   ` Joe Perches
  2011-07-21  4:05     ` Shreyas Bhatewara
  0 siblings, 1 reply; 5+ messages in thread
From: Joe Perches @ 2011-07-21  3:49 UTC (permalink / raw)
  To: Scott Goldman
  Cc: Shreyas Bhatewara, netdev@vger.kernel.org, pv-drivers@vmware.com

On Wed, 2011-07-20 at 20:06 -0700, Scott Goldman wrote:
> > Parent device for netdev should be set before netdev_info() can be called
> > otherwise there is a NULL pointer dereference and probe() fails.

I believe this is not true.
I don't see any NULL pointer dereference here.
functions and macros reordered top to bottom.

define_netdev_printk_level(netdev_info, KERN_INFO);

#define define_netdev_printk_level(func, level)			\
int func(const struct net_device *dev, const char *fmt, ...)	\
{								\
	int r;							\
	struct va_format vaf;					\
	va_list args;						\
								\
	va_start(args, fmt);					\
								\
	vaf.fmt = fmt;						\
	vaf.va = &args;						\
								\
	r = __netdev_printk(level, dev, &vaf);			\
	va_end(args);						\
								\
	return r;						\
}								\
EXPORT_SYMBOL(func);

static int __netdev_printk(const char *level, const struct net_device *dev,
			   struct va_format *vaf)
{
	int r;

	if (dev && dev->dev.parent)
		r = dev_printk(level, dev->dev.parent, "%s: %pV",
			       netdev_name(dev), vaf);
	else if (dev)
		r = printk("%s%s: %pV", level, netdev_name(dev), vaf);
	else
		r = printk("%s(NULL net_device): %pV", level, vaf);

	return r;
}

static inline const char *netdev_name(const struct net_device *dev)
{
	if (dev->reg_state != NETREG_REGISTERED)
		return "(unregistered net_device)";
	return dev->name;
}



^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [Pv-drivers] [PATCH net-next] vmxnet3: set netdev parant device before calling netdev_info
  2011-07-21  3:49   ` Joe Perches
@ 2011-07-21  4:05     ` Shreyas Bhatewara
  0 siblings, 0 replies; 5+ messages in thread
From: Shreyas Bhatewara @ 2011-07-21  4:05 UTC (permalink / raw)
  To: Joe Perches, Scott Goldman; +Cc: netdev@vger.kernel.org, pv-drivers@vmware.com

> -----Original Message-----
> From: Joe Perches [mailto:joe@perches.com]
> Sent: Wednesday, July 20, 2011 8:49 PM
> To: Scott Goldman
> Cc: Shreyas Bhatewara; netdev@vger.kernel.org; pv-drivers@vmware.com
> Subject: RE: [Pv-drivers] [PATCH net-next] vmxnet3: set netdev parant
> device before calling netdev_info
> 
> On Wed, 2011-07-20 at 20:06 -0700, Scott Goldman wrote:
> > > Parent device for netdev should be set before netdev_info() can be
> called
> > > otherwise there is a NULL pointer dereference and probe() fails.
> 
> I believe this is not true.
> I don't see any NULL pointer dereference here.
> functions and macros reordered top to bottom.
> 


Thanks for looking Joe.
This happened in 2.6.36. I saw the panic in 2.6.34 and assumed that it would be same
in the latest kernel.
It would not panic in 3.0 but it is good to have the parent device set early.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next] vmxnet3: set netdev parant device before calling netdev_info
  2011-07-21  2:01 [PATCH net-next] vmxnet3: set netdev parant device before calling netdev_info Shreyas Bhatewara
  2011-07-21  3:06 ` [Pv-drivers] " Scott Goldman
@ 2011-07-22  4:34 ` David Miller
  1 sibling, 0 replies; 5+ messages in thread
From: David Miller @ 2011-07-22  4:34 UTC (permalink / raw)
  To: sbhatewara; +Cc: netdev, pv-drivers

From: Shreyas Bhatewara <sbhatewara@vmware.com>
Date: Wed, 20 Jul 2011 19:01:11 -0700 (PDT)

> 
> Parent device for netdev should be set before netdev_info() can be called
> otherwise there is a NULL pointer dereference and probe() fails.
> 
> Signed-off-by: Shreyas N Bhatewara <sbhatewara@vmware.com>

Applied.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-07-22  4:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-21  2:01 [PATCH net-next] vmxnet3: set netdev parant device before calling netdev_info Shreyas Bhatewara
2011-07-21  3:06 ` [Pv-drivers] " Scott Goldman
2011-07-21  3:49   ` Joe Perches
2011-07-21  4:05     ` Shreyas Bhatewara
2011-07-22  4:34 ` David Miller

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).