From mboxrd@z Thu Jan 1 00:00:00 1970 From: gengdongjiu@huawei.com (gengdongjiu) Date: Sat, 16 Dec 2017 15:09:42 +0800 Subject: [Question ]: Avoid kernel panic when killing an application if happen RAS page table error In-Reply-To: <20171215193551.GD27160@bombadil.infradead.org> References: <0184EA26B2509940AA629AE1405DD7F2019C8B36@DGGEMA503-MBS.china.huawei.com> <20171205165727.GG3070@tassilo.jf.intel.com> <0276f3b3-94a5-8a47-dfb7-8773cd2f99c5@huawei.com> <0b7bb7b3-ae39-0c97-9c0a-af37b0701ab4@huawei.com> <5A3419F3.1030804@arm.com> <20171215193551.GD27160@bombadil.infradead.org> Message-ID: <42ebc814-fd8d-0de5-5c3c-e2eec02ebf66@huawei.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2017/12/16 3:35, Matthew Wilcox wrote: >> It's going to be complicated to do, I don't think its worth the effort. > We can find a bit in struct page that we guarantee will only be set if > this is allocated as a pagetable. Bit 1 of the third union is currently > available (compound_head is a pointer if bit 0 is set, so nothing is > using bit 1). We can put a pointer to the mm_struct in the same word. > > Finding all the allocated pages will be the tricky bit. We could put a > list_head into struct page; perhaps in the same spot as page_deferred_list > for tail pages. Then we can link all the pagetables belonging to > this mm together and tear them all down if any of them get an error. > They'll repopulate on demand. It won't be quick or scalable, but when > the alternative is death, it looks relatively attractive. Thanks for the comments, I will check it in detailed and investigate whether it is worth to do for it. Thanks! > > . >