mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-09-28 19:20:30 +00:00
In this code, blkvsc_req is allocated in the cache blkdev->request_pool, but freed in the first case to the cache blkvsc_req->dev->request_pool. blkvsc_req->dev is subsequently initialized to blkdev, making these the same at the second call to kmem_cache_free. But at the point of the first call, blkvsc_req->dev is NULL. The second call is changed too, for uniformity. The semantic patch that fixes this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression x,e,e1,e2,e3; @@ x = \(kmem_cache_alloc\|kmem_cache_zalloc\)(e1,e2) ... when != x = e ( kmem_cache_free(e1,x); | ?-kmem_cache_free(e3,x); +kmem_cache_free(e1,x); ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Cc: KY Srinivasan <kys@microsoft.com> Cc: Hank Janssen <hjanssen@microsoft.com> Cc: Haiyang Zhang <haiyangz@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
History
|
|
|---|---|---|
| .. | ||
| tools | ||
| blkvsc_drv.c | ||
| channel.c | ||
| channel_mgmt.c | ||
| connection.c | ||
| hv.c | ||
| hv_kvp.c | ||
| hv_kvp.h | ||
| hv_mouse.c | ||
| hv_timesource.c | ||
| hv_util.c | ||
| hyperv.h | ||
| hyperv_net.h | ||
| hyperv_storage.h | ||
| hyperv_vmbus.h | ||
| Kconfig | ||
| Makefile | ||
| netvsc.c | ||
| netvsc_drv.c | ||
| ring_buffer.c | ||
| rndis_filter.c | ||
| storvsc.c | ||
| storvsc_drv.c | ||
| TODO | ||
| vmbus_drv.c | ||