|
|
@@ -2545,7 +2545,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.
|