xen-netfront: update num_queues to real created
Subsystems (4)
PATCH v2 1/1 xen-netfront: update num_queues to real created
Sometimes xennet_create_queues() may failed to created all requested queues, we need to update num_queues to real created to avoid NULL pointer dereference.
--- drivers/net/xen-netfront.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-)
drivers/net/xen-netfront.c +7 -7
@@ -1706,19 +1706,19 @@ static void xennet_destroy_queues(struct netfront_info *info) }static int xennet_create_queues (struct netfront_info *info, -unsigned int num_queues) +unsigned int *num_queues) {unsigned int i;int ret; - info->queues =kcalloc (num_queues,sizeof (struct netfront_queue ), + info->queues =kcalloc (*num_queues,sizeof (struct netfront_queue ),GFP_KERNEL );if (!info->queues)return -ENOMEM ;rtnl_lock (); -for (i =0 ; i < num_queues; i++) { +for (i =0 ; i < *num_queues; i++) {struct netfront_queue *queue = &info->queues[i]; queue->id = i;
@@ -1728,7 +1728,7 @@ static int xennet_create_queues(struct netfront_info *info,if (ret <0 ) {dev_warn (&info->netdev->dev,"only created %d queues\n" , i); - num_queues = i; + *num_queues = i;break ; }
@@ -1738,11 +1738,11 @@ static int xennet_create_queues(struct netfront_info *info,napi_enable (&queue->napi); } -netif_set_real_num_tx_queues (info->netdev, num_queues); +netif_set_real_num_tx_queues (info->netdev, *num_queues);rtnl_unlock (); -if (num_queues ==0 ) { +if (*num_queues ==0 ) {dev_err (&info->netdev->dev,"no queues\n" );return -EINVAL ; }
@@ -1788,7 +1788,7 @@ static int talk_to_netback(struct xenbus_device *dev,if (info->queues)xennet_destroy_queues (info); - err =xennet_create_queues (info, num_queues); + err =xennet_create_queues (info, &num_queues);if (err <0 ) goto destroy_ring;
Signature · 1 line
1.7.1
Quoted 10 lines · Joe Jin
Sometimes
xennet_create_queues()may failed to created all requested queues, we need to updatenum_queuesto real created to avoid NULL pointer dereference.Signed-off-by Joe Jin <[email protected]>Cc Boris Ostrovsky <[email protected]>Cc Konrad Rzeszutek Wilk <[email protected]>Cc Wei Liu <[email protected]>Cc Ian Campbell <[email protected]>Cc David S. Miller <[email protected]>
Quoted 10 lines · Joe Jin
Sometimes
xennet_create_queues()may failed to created all requested queues, we need to updatenum_queuesto real created to avoid NULL pointer dereference.Signed-off-by Joe Jin <[email protected]>Cc Boris Ostrovsky <[email protected]>Cc Konrad Rzeszutek Wilk <[email protected]>Cc Wei Liu <[email protected]>Cc Ian Campbell <[email protected]>Cc David S. Miller <[email protected]>
From: Joe Jin <[email protected]>
Date: Mon, 19 Oct 2015 13:37:17 +0800
Quoted 5 lines
Sometimes
xennet_create_queues()may failed to created all requested queues, we need to updatenum_queuesto real created to avoid NULL pointer dereference.Signed-off-by Joe Jin <[email protected]>
Applied.
From: Joe Jin <[email protected]>
Date: Mon, 19 Oct 2015 13:37:17 +0800
Quoted 5 lines
Sometimes
xennet_create_queues()may failed to created all requested queues, we need to updatenum_queuesto real created to avoid NULL pointer dereference.Signed-off-by Joe Jin <[email protected]>
Applied.