On Tue, Jul 27, 2021 at 3:13 PM Xianting Tian <xianting.tian@xxxxxxxxxxxxxxxxx> wrote: > @@ -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@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization