Re: [PATCH 088/117] Staging: hv: netvsc: Inline the code for free_net_device()

2011-07-16 Thread Dan Carpenter
On Fri, Jul 15, 2011 at 10:47:16AM -0700, K. Y. Srinivasan wrote:
 -static void free_net_device(struct netvsc_device *device)
 -{
 - WARN_ON(atomic_read(device-refcnt) != 0);
 - device-dev-ext = NULL;

device-dev-ext points to device.  We set it NULL here to prevent
a use after free bug.  What prevents that in the new code?

 - kfree(device);
 -}

regards,
dan carpenter


___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/virtualization


RE: [PATCH 088/117] Staging: hv: netvsc: Inline the code for free_net_device()

2011-07-16 Thread KY Srinivasan


 -Original Message-
 From: Dan Carpenter [mailto:erro...@gmail.com]
 Sent: Saturday, July 16, 2011 6:34 AM
 To: KY Srinivasan
 Cc: gre...@suse.de; linux-ker...@vger.kernel.org;
 de...@linuxdriverproject.org; virtualizat...@lists.osdl.org; Haiyang Zhang
 Subject: Re: [PATCH 088/117] Staging: hv: netvsc: Inline the code for
 free_net_device()
 
 On Fri, Jul 15, 2011 at 10:47:16AM -0700, K. Y. Srinivasan wrote:
  -static void free_net_device(struct netvsc_device *device)
  -{
  -   WARN_ON(atomic_read(device-refcnt) != 0);
  -   device-dev-ext = NULL;
 
 device-dev-ext points to device.  We set it NULL here to prevent
 a use after free bug.  What prevents that in the new code?
 
  -   kfree(device);
  -}
This function is called in only two places; a) during adding a device when we 
have a failure
(netvsc_device_add()) and during device removal (netvsc_device_remove()). I 
have handled
both these cases. In any event when we are freeing the containing object via 
kfree(), if somebody
is accessing the ext field via freed object, we have bigger problems to deal 
with.

Regards,

K. Y


 
 regards,
 dan carpenter
 
 

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/virtualization