On 4/3/20 7:21 AM, Pasi Kärkkäinen wrote:
Hello,
On Wed, Jan 22, 2020 at 08:57:21AM -0500, Daniel Gryniewicz wrote:
>
> On 1/20/20 4:31 PM, Pasi Kärkkäinen wrote:
>> Hi,
>>
>> On Mon, Jan 20, 2020 at 10:49:13AM -0500, William Katcher wrote:
>>> Pradeep,
>>> I believe the fix went into 3.2.
>>>
>> Is there a plan to do v2.8.4? Would be nice to have this patch in 2.8.x aswell,
>> as it fixes a crash / coredump.
>
> Yes
>
Any thoughts about v2.8.4 release timeframe?
As soon as Frank makes the backport doc, I'll start on 3.x and 2.8.x
releases. It should be about a week after that.
Daniel
Thanks,
-- Pasi
>
> Daniel
>
>>
>>
>> -- Pasi
>>
>>> Bill
>>> On Fri, Jan 17, 2020 at 2:41 PM Pradeep
<[1]pradeepthomas(a)gmail.com>
>>> wrote:
>>>
>>> Hi Bill,
>>> Do you know if there is a patch that fixes this core dump? I'm
hitting
>>> the same with 2.8.3.
>>> Thanks,
>>> Pradeep
>>> On Mon, Dec 9, 2019 at 10:11 AM <[2]katcherw(a)gmail.com> wrote:
>>>
>>> I think the bug is caused by the following:
>>>
>>> In nfs_dupreq_start, when the state is DUPREQ_START, the following
>>> code is entered:
>>>
>>> Â Â Â Â Â Â if (unlikely(dv->state == DUPREQ_START)) {
>>> Â Â Â Â Â Â Â Â status = DUPREQ_BEING_PROCESSED;
>>>
>>> Note that in this case req->rq_u1 is not assigned.
>>>
>>> Later, the caller of this routine, nfs_rpc_process_request, will
check
>>> the status, and in the case of DUPREQ_BEING_PROCESSED will break out
>>> of the switch statement and jump to freeargs, which will call
>>> free_args and then nfs_dupreq_rele. Unfortunately, nfs_dupreq_rele
is
>>> assuming that req->rq_u1 points to a cache entry, but it was
never
>>> assigned in this case, leading to dereferencing a null ptr. In 2.6,
>>> there was a check to see if res_nfs was assigned before calling
>>> nfs_dupreq_rele, but it appears that it was removed in 2.8 and
later.
>>> The code should either check for req->rq_u1 or res_nfs.
>>>
>>> Although we noticed this bug in 2.8.2, from looking at the code it
>>> looks like it is also in the tip.
>>>
>>> Bill