On Mon, Feb 11, 2019 at 8:57 AM Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote: > > On Fri, Feb 08, 2019 at 10:35:13AM -0800, Todd Kjos wrote: > > Binder buffers have always been mapped into kernel space > > via map_kernel_range_noflush() to allow the binder driver > > to modify the buffer before posting to userspace for > > processing. > > > > In recent Android releases, the number of long-running > > binder processes has increased to the point that for > > 32-bit systems, there is a risk of running out of > > vmalloc space. > > > > This patch set removes the persistent mapping of the > > binder buffers into kernel space. Instead, the binder > > driver creates temporary mappings with kmap() or > > kmap_atomic() to copy to or from the buffer only when > > necessary. > > Is there any good reason to actually map the user memory to kernel > space instead of just using copy_{to,from}_user? Yes, the mappings are needed for cases where we are accessing binder buffers of the target while in sender context. For example, we copy the message from the sender to the target with 1 copy while in the sender's context. For this we use copy_from_user(), but use these temporary mappings for the destination (target process). -Todd _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel