From: Sebastien Tisserant Date: Thu, 1 Aug 2019 17:06:08 +0000 (-0500) Subject: SMB3: Kernel oops mounting a encryptData share with CONFIG_DEBUG_VIRTUAL X-Git-Tag: v5.2.11~84 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=4fe7ee5ed9b045c2c8e54bac39daba265aa288e0;p=users%2Fdwmw2%2Flinux.git SMB3: Kernel oops mounting a encryptData share with CONFIG_DEBUG_VIRTUAL [ Upstream commit ee9d66182392695535cc9fccfcb40c16f72de2a9 ] Fix kernel oops when mounting a encryptData CIFS share with CONFIG_DEBUG_VIRTUAL Signed-off-by: Sebastien Tisserant Reviewed-by: Pavel Shilovsky Signed-off-by: Steve French Signed-off-by: Sasha Levin --- diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index ae10d6e297c3a..42de31d206169 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -3439,7 +3439,15 @@ fill_transform_hdr(struct smb2_transform_hdr *tr_hdr, unsigned int orig_len, 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.