Re: [PATCH 1/9] w1: use the bus mutex for the "rw" file

From: Krzysztof Kozlowski

Date: Fri Oct 30 2026 - 08:23:34 EST


On 27/10/2026 17:04, Greg Kroah-Hartman wrote:
> From: Josef Bacik <josef@xxxxxxxxxxxxxx>
>
> Commit b02f8bede217 ("W1: split master mutex to avoid deadlocks.") gave
> the bus a mutex of its own, because the lock which protects the list of
> slaves is held while a slave is removed, which waits for the sysfs
> callbacks of the slave, so these must not take it. It converted all the
> slave drivers, but not the "rw" file of the default family in w1.c,
> which still takes the mutex of the master to talk on the bus. That has
> two consequences:
>
> - A deadlock. w1_process() holds the mutex of the master while it
> searches the bus and detaches the slaves which have gone:
>
> w1_process() read() of .../rw
> mutex_lock(&dev->mutex) kernfs active reference
> w1_search_process() rw_read()
> w1_slave_detach() mutex_lock(&master->mutex)
> w1_unref_slave() waits
> device_unregister()
> waits for the reference
>
> The file is readable for everybody.
>
> - The accesses through this file are not serialised with those of the
> slave drivers, which take bus_mutex, so that two transactions can get
> mixed up on the wire.
>
> Take bus_mutex here as well. It also excludes the search, which takes it
> for every pass.
>
> Fixes: b02f8bede217 ("W1: split master mutex to avoid deadlocks.")
> Cc: stable <stable@xxxxxxxxxx>
> Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>


Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxxxxxxxx>

Best regards,
Krzysztof