lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Thu, 7 Jul 2016 14:31:00 -0500
From:	John Allen <jallen@...ux.vnet.ibm.com>
To:	Thomas Falcon <tlfalcon@...ux.vnet.ibm.com>, netdev@...r.kernel.org
Cc:	nfont@...ux.vnet.ibm.com
Subject: Re: [PATCH net 3/4] ibmvnic: simplify and improve driver probe
 function

On 07/06/2016 03:35 PM, Thomas Falcon wrote:
> @@ -3560,6 +3608,7 @@ static const struct file_operations ibmvnic_dump_ops = {
> 
>  static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
>  {
> +	unsigned long timeout = msecs_to_jiffies(30000);
>  	struct ibmvnic_adapter *adapter;
>  	struct net_device *netdev;
>  	unsigned char *mac_addr_p;
> @@ -3638,30 +3687,26 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
>  	ibmvnic_send_crq_init(adapter);
> 
>  	init_completion(&adapter->init_done);
> -	wait_for_completion(&adapter->init_done);
> +	if (!wait_for_completion_timeout(&adapter->init_done, timeout))
> +		return 0;
> 
>  	do {
> -		adapter->renegotiate = false;
> -
> -		init_sub_crqs(adapter, 0);
> -		reinit_completion(&adapter->init_done);
> -		wait_for_completion(&adapter->init_done);
> -
>  		if (adapter->renegotiate) {
> -			release_sub_crqs(adapter);
> +			adapter->renegotiate = false;
> +			release_sub_crqs_no_irqs(adapter);
>  			send_cap_queries(adapter);
> 
>  			reinit_completion(&adapter->init_done);
> -			wait_for_completion(&adapter->init_done);
> +			if (!wait_for_completion_timeout(&adapter->init_done,
> +							 timeout))
> +				return 0;
>  		}
>  	} while (adapter->renegotiate);

Instead of a do-while here, this should just be simplified to a while loop.

while (adapter->renegotiate) {
	...
}

will serve the same purpose as

do {
	if (adapter->renegotiate) {
		...
	}
} while (adapter->renegotiate);

Same goes for the similar loop in patch 4/4.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ