Re: [PATCH] Bluetooth: revert: hci_h5: close serdev device and free hu in h5_close

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Hans,

> There have been multiple revisions of the patch fix the h5->rx_skb
> leak. Accidentally the first revision (which is buggy) and v5 have
> both been merged:
> 
> v1 commit 70f259a3f427 ("Bluetooth: hci_h5: close serdev device and free
> hu in h5_close");
> v5 commit 855af2d74c87 ("Bluetooth: hci_h5: fix memory leak in h5_close")
> 
> The correct v5 makes changes slightly higher up in the h5_close()
> function, which allowed both versions to get merged without conflict.
> 
> The changes from v1 unconditionally frees the h5 data struct, this
> is wrong because in the serdev enumeration case the memory is
> allocated in h5_serdev_probe() like this:
> 
>        h5 = devm_kzalloc(dev, sizeof(*h5), GFP_KERNEL);
> 
> So its lifetime is tied to the lifetime of the driver being bound
> to the serdev and it is automatically freed when the driver gets
> unbound. In the serdev case the same h5 struct is re-used over
> h5_close() and h5_open() calls and thus MUST not be free-ed in
> h5_close().
> 
> The serdev_device_close() added to h5_close() is incorrect in the
> same way, serdev_device_close() is called on driver unbound too and
> also MUST no be called from h5_close().
> 
> This reverts the changes made by merging v1 of the patch, so that
> just the changes of the correct v5 remain.
> 
> Cc: Anant Thazhemadam <anant.thazhemadam@xxxxxxxxx>
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
> drivers/bluetooth/hci_h5.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)

patch has been applied to bluetooth-next tree.

Regards

Marcel




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux