PROBLEM: Kernel oops when mounting a encryptData CIFS share with CONFIG_DEBUG_VIRTUAL

Cyrille Mucchietto cmucchietto at wallix.com
Fri Aug 2 06:58:38 UTC 2019


On 8/1/19 7:13 PM, Steve French wrote:
> Sebastien,
> I cleaned up the patch and merged into cifs-2.6.git - can you
> doublecheck it is correct?

Sebastien is not avalaible, but we confirm that this patch is correct

Regards,

Cyrille Mucchietto


> On Thu, Jul 25, 2019 at 3:35 PM Pavel Shilovsky
> <pavel.shilovsky at gmail.com> wrote:
>> чт, 25 июл. 2019 г. в 09:57, Sebastien Tisserant via samba-technical
>> <samba-technical at lists.samba.org>:
>> ...
>>> mount works without CONFIG_DEBUG_VIRTUAL
>>>
>>> If we don't set CONFIG_VMAP_STACK mount works with CONFIG_DEBUG_VIRTUAL
>>>
>>>
>>> We have the following (very quick and dirty) patch :
>>>
>>> Index: linux-4.19.60/fs/cifs/smb2ops.c
>>> ===================================================================
>>> --- linux-4.19.60.orig/fs/cifs/smb2ops.c
>>> +++ linux-4.19.60/fs/cifs/smb2ops.c
>>> @@ -2545,7 +2545,15 @@ fill_transform_hdr(struct smb2_transform
>>>  static inline void smb2_sg_set_buf(struct scatterlist *sg, const void *buf,
>>>                     unsigned int buflen)
>>>  {
>>> -    sg_set_page(sg, virt_to_page(buf), buflen, offset_in_page(buf));
>>> +      void *addr;
>>> +      /*
>>> +       * VMAP_STACK (at least) puts stack into the vmalloc address space
>>> +      */
>>> +      if (is_vmalloc_addr(buf))
>>> +              addr = vmalloc_to_page(buf);
>>> +      else
>>> +              addr = virt_to_page(buf);
>>> +      sg_set_page(sg, addr, buflen, offset_in_page(buf));
>>>  }
>>>
>>>  /* Assumes the first rqst has a transform header as the first iov.
>>>
>>>
>> Thanks for reporting this. The patch looks good to me. Did you test
>> your scenario all together with it (not only mounting)?
>>
>>
>> Best regards,
>> Pavel Shilovskiy
>>
>>


More information about the samba-technical mailing list