A Arnd Bergmann #
Message details and related content
On Tue, Jul 27, 2021 at 3:13 PM Xianting Tian [off-list ref] wrote:
quoted hunk
@@ -1127,13 +1128,18 @@ static int put_chars(u32 vtermno, const char *buf, int count) if (!port) return -EPIPE; - data = kmemdup(buf, count, GFP_ATOMIC); - if (!data) - return -ENOMEM; + if (is_vmalloc_addr(buf)) { + data = kmemdup(buf, count, GFP_ATOMIC);
What about buffers in .data? If those are in a loadable module, I guess you have the same problem as with vmalloc() and vmap(). is_vmalloc_or_module_addr() would take care of both, not sure if there are other examples that don't work. In theory it could be ioremap(), kmap_atomic() or fixmap as well, but those seem less likely to matter here. Arnd _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization