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>] [day] [month] [year] [list]
Date:   Sun, 25 Jul 2021 14:46:57 -0500
From:   Larry Finger <Larry.Finger@...inger.net>
To:     htl10@...rs.sourceforge.net,
        Herton Ronaldo Krzesinski <herton@...onical.com>,
        Kalle Valo <kvalo@...eaurora.org>,
        "David S. Miller" <davem@...emloft.net>,
        Jakub Kicinski <kuba@...nel.org>, gregkh@...uxfoundation.org,
        Salah Triki <salah.triki@...il.com>
Cc:     linux-wireless@...r.kernel.org, netdev@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH] wireless: rtl8187: replace udev with usb_get_dev()

On 7/24/21 3:54 PM, Hin-Tak Leung wrote:
> 
> 
> On Saturday, 24 July 2021, 19:35:12 BST, Salah Triki <salah.triki@...il.com> wrote:
> 
> 
>  > Replace udev with usb_get_dev() in order to make code cleaner.
> 
>  > Signed-off-by: Salah Triki <salah.triki@...il.com>
>  > ---
>  > drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c | 4 +---
>  > 1 file changed, 1 insertion(+), 3 deletions(-)
> 
>  > diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c 
> b/drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c
>  > index eb68b2d3caa1..30bb3c2b8407 100644
>  > --- a/drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c
>  > +++ b/drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c
>  > @@ -1455,9 +1455,7 @@ static int rtl8187_probe(struct usb_interface *intf,
> 
>  >     SET_IEEE80211_DEV(dev, &intf->dev);
>  >     usb_set_intfdata(intf, dev);
>  > -    priv->udev = udev;
>  > -
>  > -    usb_get_dev(udev);
>  > +    priv->udev = usb_get_dev(udev);
> 
>  >     skb_queue_head_init(&priv->rx_queue);
> 
>  > --
>  > 2.25.1
> 
> It is not cleaner - the change is not functionally equivalent. Before the 
> change, the reference count is increased after the assignment; and after the 
> change, before the assignment. So my question is, does the reference count 
> increasing a little earlier matters? What can go wrong between very short time 
> where the reference count increases, and priv->udev not yet assigned? I think 
> there might be a race condition where the probbe function is called very shortly 
> twice.
> Especially if the time of running the reference count function is non-trivial.
> 
> Larry, what do you think?

My belief was that probe routines were called in order, which was confirmed by 
GregKH. As a result, there can be no race condition, and the order of setting 
the reference count does not matter. On the other hand, the current code is not 
misleading, nor unclear. Why should it be changed?

NACK on the patch.

Larry

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ