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:   Wed, 11 Mar 2020 10:24:12 +0100
From:   Johan Hovold <johan@...nel.org>
To:     Rocky Liao <rjliao@...eaurora.org>
Cc:     marcel@...tmann.org, johan.hedberg@...il.com,
        linux-kernel@...r.kernel.org, linux-bluetooth@...r.kernel.org,
        linux-arm-msm@...r.kernel.org, bgodavar@...eaurora.org,
        c-hbandi@...eaurora.org, hemantg@...eaurora.org, mka@...omium.org
Subject: Re: [PATCH v1] Bluetooth: hci_qca: Replace devm_gpiod_get() with
 devm_gpiod_get_optional()

On Wed, Mar 04, 2020 at 09:16:45PM +0800, Rocky Liao wrote:
> This patch replaces devm_gpiod_get() with devm_gpiod_get_optional() to get
> bt_en and replaces devm_clk_get() with devm_clk_get_optional() to get
> susclk. It also uses NULL check to determine whether the resource is
> available or not.
> 
> Fixes: 8a208b24d770 ("Bluetooth: hci_qca: Make bt_en and susclk not mandatory for QCA Rome")
> Signed-off-by: Rocky Liao <rjliao@...eaurora.org>
> ---
>  drivers/bluetooth/hci_qca.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)

> @@ -1901,15 +1901,15 @@ static int qca_serdev_probe(struct serdev_device *serdev)
>  		}
>  	} else {
>  		qcadev->btsoc_type = QCA_ROME;
> -		qcadev->bt_en = devm_gpiod_get(&serdev->dev, "enable",
> +		qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
>  					       GPIOD_OUT_LOW);
> -		if (IS_ERR(qcadev->bt_en)) {
> +		if (!qcadev->bt_en) {
>  			dev_warn(&serdev->dev, "failed to acquire enable gpio\n");

Shouldn't this be dev_dbg() if the gpio is indeed optional?

>  			power_ctrl_enabled = false;
>  		}
>  
> -		qcadev->susclk = devm_clk_get(&serdev->dev, NULL);
> -		if (IS_ERR(qcadev->susclk)) {
> +		qcadev->susclk = devm_clk_get_optional(&serdev->dev, NULL);
> +		if (!qcadev->susclk) {
>  			dev_warn(&serdev->dev, "failed to acquire clk\n");

Same here.

>  		} else {
>  			err = clk_set_rate(qcadev->susclk, SUSCLK_RATE_32KHZ);
> @@ -1924,7 +1924,7 @@ static int qca_serdev_probe(struct serdev_device *serdev)
>  		err = hci_uart_register_device(&qcadev->serdev_hu, &qca_proto);
>  		if (err) {
>  			BT_ERR("Rome serdev registration failed");
> -			if (!IS_ERR(qcadev->susclk))
> +			if (qcadev->susclk)
>  				clk_disable_unprepare(qcadev->susclk);

The clock framework allows you to pass in NULL precisely to be able to
handle optional resources without sprinkling conditionals all over (the
gpio subsystem does not however).

Applies to clk_set_rate() etc. above as well.

>  			return err;
>  		}
> @@ -1945,7 +1945,7 @@ static void qca_serdev_remove(struct serdev_device *serdev)
>  
>  	if (qca_is_wcn399x(qcadev->btsoc_type))
>  		qca_power_shutdown(&qcadev->serdev_hu);
> -	else if (!IS_ERR(qcadev->susclk))
> +	else if (qcadev->susclk)
>  		clk_disable_unprepare(qcadev->susclk);

Same here.

>  	hci_uart_unregister_device(&qcadev->serdev_hu);

Johan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ