Re: [PATCH v3] 9p/trans_fd: mark concurrent read and writes to p9_conn->err
From: Dominique Martinet
Date: Tue Mar 18 2025 - 18:01:42 EST
Ignacio Encinas wrote on Tue, Mar 18, 2025 at 10:39:02PM +0100:
> Writes for the error value of a connection are spinlock-protected inside
> p9_conn_cancel, but lockless reads are present elsewhere to avoid
> performing unnecessary work after an error has been met.
>
> Mark the write and lockless reads to make KCSAN happy. Mark the write as
> exclusive following the recommendation in "Lock-Protected Writes with
> Lockless Reads" in tools/memory-model/Documentation/access-marking.txt
> while we are at it.
>
> Mark p9_fd_request and p9_conn_cancel m->err reads despite the fact that
> they do not race with concurrent writes for stylistic reasons.
>
> Reported-by: syzbot+d69a7cc8c683c2cb7506@xxxxxxxxxxxxxxxxxxxxxxxxx
> Reported-by: syzbot+483d6c9b9231ea7e1851@xxxxxxxxxxxxxxxxxxxxxxxxx
> Signed-off-by: Ignacio Encinas <ignacio@xxxxxxxxxxxx>
> ---
> Changes in v3:
>
> - Introduce a couple of extra READ_ONCEs to maintain consistency across
> m->err reads (noted in the commit message too for future reference)
> - Remove racy read from p9_fd_request by reusing the previously read
> error (arguably, the lock was never of much use)
Thank you!
I've updated the patch in my -next branch, and it'll go to Linus in a
couple of weeks with the 6.15 merge window
(our mails crossed, feel free to ignore the other one)
--
Dominique