diff options
| -rw-r--r-- | net/core/dev.c | 36 | 
1 files changed, 17 insertions, 19 deletions
| diff --git a/net/core/dev.c b/net/core/dev.c index f44d29ae5d67..d33adecec44b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1583,12 +1583,12 @@ int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq)  {  	int rc; +	if (rxq < 1 || rxq > dev->num_rx_queues) +		return -EINVAL; +  	if (dev->reg_state == NETREG_REGISTERED) {  		ASSERT_RTNL(); -		if (rxq > dev->num_rx_queues) -			return -EINVAL; -  		rc = net_rx_queue_update_kobjects(dev, dev->real_num_rx_queues,  						  rxq);  		if (rc) @@ -5013,25 +5013,23 @@ static int netif_alloc_rx_queues(struct net_device *dev)  {  #ifdef CONFIG_RPS  	unsigned int i, count = dev->num_rx_queues; +	struct netdev_rx_queue *rx; -	if (count) { -		struct netdev_rx_queue *rx; - -		rx = kcalloc(count, sizeof(struct netdev_rx_queue), GFP_KERNEL); -		if (!rx) { -			pr_err("netdev: Unable to allocate %u rx queues.\n", -			       count); -			return -ENOMEM; -		} -		dev->_rx = rx; +	BUG_ON(count < 1); -		/* -		 * Set a pointer to first element in the array which holds the -		 * reference count. -		 */ -		for (i = 0; i < count; i++) -			rx[i].first = rx; +	rx = kcalloc(count, sizeof(struct netdev_rx_queue), GFP_KERNEL); +	if (!rx) { +		pr_err("netdev: Unable to allocate %u rx queues.\n", count); +		return -ENOMEM;  	} +	dev->_rx = rx; + +	/* +	 * Set a pointer to first element in the array which holds the +	 * reference count. +	 */ +	for (i = 0; i < count; i++) +		rx[i].first = rx;  #endif  	return 0;  } | 
