Thread (5 messages) flat view 5 messages, 2 authors, 2017-10-03

Re: [linux-next][Oops] memory hot-unplug results fault instruction address at /include/linux/list.h:104

From: Kees Cook <hidden>
Date: 2017-09-20 19:54:39
Also in: linux-next

On Wed, Sep 20, 2017 at 12:40 AM, Abdul Haleem
[off-list ref] wrote:
On Tue, 2017-09-12 at 12:11 +0530, abdul wrote:
quoted
Hi,

Memory hot-unplug on PowerVM LPAR running next-20170911 results in
Faulting instruction address: 0xc0000000002b56c4

which maps to the below code path:

0xc0000000002b56c4 is in __rmqueue (./include/linux/list.h:104).
99     * This is only for internal list manipulation where we know
100    * the prev/next entries already!
101    */
102   static inline void __list_del(struct list_head * prev, struct
list_head * next)
103   {
104           next->prev = prev;
105           WRITE_ONCE(prev->next, next);
106   }
107
108   /**
I see another kernel Oops when running transparent hugepages
de-fragmentation test.

And the faulty instruction address again pointing to same code line
0xc00000000026f9f4 is in compaction_alloc (./include/linux/list.h:104)

steps to recreate:
-----------------
1. Enable transparent hugepages ("always")
2. Turn off the defrag $ echo 0 > khugepaged/defrag
3. Write random to memory path
4. Set huge pages numbers
5. Turn on defrag $ echo 1 > khugepaged/defrag


new trace:
----------
Unable to handle kernel paging request for data at address
0x5deadbeef0000108
This looks like use-after-list-removal, that value appears to be LIST_POISON1.

Try enabling CONFIG_DEBUG_LIST to see if you get better details?

-Kees

-- 
Kees Cook
Pixel Security
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help