Messages in this thread | | | From | Jue Wang <> | Date | Mon, 2 Aug 2021 08:29:59 -0700 | Subject | Re: [PATCH 2/3] x86/mce: Avoid infinite loop for copy from user recovery |
| |
On Sat, Jul 31, 2021 at 1:43 PM Luck, Tony <tony.luck@intel.com> wrote: > > > After cherry picking patch 1 & 2, I saw the following with 2 UC errors injected > > into the user space buffer passed into write(2), as expected: > > > > [ 287.994754] Kernel panic - not syncing: Machine checks to different > > user pages > > Interesting. What are the offsets of the two injected errors in your test (both > w.r.t. the start of the buffer, and within a page). They are just random offsets into the first 2 pages of the buffer (4k aligned), 1 error per page. To be precise: 0x440 and 0x1c0 within each page.
> > > The kernel tested with has its x86/mce and mm/memory-failure aligned with > > upstream till around 2020/11. > > > > Is there any other patch that I have missed to the write syscall etc? > > There is a long series of patches from Al Viro to lib/iov_iter.c that are maybe > also relevent in making the kernel copy from user stop at the first poison > address in the buffer. Thanks for the pointer.
Looks like [1],[2] are not yet merged.
Is lib/iov_iter.c the only place the kernel performs a copy from user and gets multiple poisons? I suspect not.
For example, lots of kernel accesses to user space memory are from kernel agents like khugepaged, NUMA auto balancing etc. These paths are not handled by the fix to lib/iov_iter.c.
I think the fix might have to be made to #MC handler's behavior wrt the task work. Send #MC signals and perform memory-failures actions from a task work is fine for #MCs originated from user space, but not suitable for kernel accessing poisoned memory (user space memory). For the latter #MC handler must handle #MC recovery in the exception context without resorting to task work; this may be OK since the recovery action for the later case is minimal: mark PG_hwpoison and remove the kernel mapping.
1. https://lore.kernel.org/linux-mm/20210326000235.370514-2-tony.luck@intel.com/ 2. https://lore.kernel.org/linux-mm/20210326000235.370514-3-tony.luck@intel.com/
> > -Tony
| |