Re: [PATCH] SUNRPC: Fix a backchannel deadlock

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

 



On Jul 22, 2015, at 5:15 PM, Chuck Lever <chuck.lever@xxxxxxxxxx> wrote:

> 
> On Jul 22, 2015, at 5:14 PM, Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> wrote:
> 
>> On Wed, Jul 22, 2015 at 4:40 PM, Chuck Lever <chuck.lever@xxxxxxxxxx> wrote:
>>> Hi Trond-
>>> 
>>> 
>>> On Jul 22, 2015, at 4:36 PM, Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> wrote:
>>> 
>>>> xprt_alloc_bc_request() cannot call xprt_free_bc_request() without
>>>> deadlocking, since it already holds the xprt->bc_pa_lock.
>>>> 
>>>> Reported-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
>>>> Fixes: 0d2a970d0ae55 ("SUNRPC: Fix a backchannel race")
>>>> Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx>
>>> 
>>> That’s exactly what I did as a basic fix, and I can report that
>>> it successfully avoids the deadlock.
>>> 
>>> If xprt_alloc_bc_request() no longer calls xprt_free_bc_request(),
>>> are the accounting changes introduced by 0d2a970d0ae55 still
>>> necessary?
>> 
>> The accounting changes are there to fix the race that Christoph
>> reported in which a valid backchannel request can be rejected by the
>> RPC layer if it happens to come in after the reply to the previous
>> request was sent, but before xprt_free_bc_request has completed. I
>> would therefore expect them still to be needed.
>> 
>> That said, I just noticed that the bc_free_count was being incorrectly
>> maintained. Should be fixed with v2 of the patch series.
> 
> I will get v2 in front of the tester who found this issue.

The v2 fix appears solid. Thanks!


--
Chuck Lever



--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux