From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.codeaurora.org ([198.145.29.96]:48946 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753271AbdHGMS6 (ORCPT ); Mon, 7 Aug 2017 08:18:58 -0400 Received: from mail.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.codeaurora.org (Postfix) with ESMTP id F353360131 for ; Mon, 7 Aug 2017 12:18:57 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Mon, 07 Aug 2017 17:48:57 +0530 From: ankijain@codeaurora.org To: linux-fsdevel@vger.kernel.org Subject: Re: Page fault while link_path_walk for path_len > 4060 bytes In-Reply-To: <08e7e3332dc86c535dd2961ac1cde0b5@codeaurora.org> References: <08e7e3332dc86c535dd2961ac1cde0b5@codeaurora.org> Message-ID: <54083a824d6705a93d972ca5ef3a7b35@codeaurora.org> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On 2017-08-07 11:52, ankijain@codeaurora.org wrote: > Hi > > We are facing a issue while creating the directories up-to maximum > depth. > While doing this, page fault occurs some times if PATH_LEN is near to > page boundary. > During hash_name() calculation inside link_path_walk(), > load_unaligned_zeropad() is causing page fault as it tries to access > next page data(which is not mapped). > We have already taken a lock(rcu_read_lock) in path_init() and as a > part of page fault it checks if process can sleep (might_sleep), which > results in panic as rcu_read_lock is already taken in path_init(). > > One observation : Panic happens only when page(which contain the > path_name and length > 4060) is the last page of the slab memory. > > Test Case detail: > Kernel version : 4.4 > We are following stress-ng test. > https://github.com/ColinIanKing/stress-ng > > 1. dirdeep for creating directory upto maximum depth. > 2. vm for memory allocation in backgroud. > > Above 2 test cases are running simultaneously and it takes ~3-4 hours > to reproduce this issue. > > Pasting comment section for load_unaligned_zeropad(): > /* > * Load an unaligned word from kernel space. > * > * In the (very unlikely) case of the word being a page-crosser > * and the next page not being mapped, take the exception and > * return zeroes in the non-existing part. > */ > > Wanted to confirm if this "very unlikely case" mentioned above is > pointing to the same issue ? > Also let us know if this is a known issue and if some fix is already > available. If not, please suggest how we can proceed further. > > Appreciate your help. Thanks in advance!! > > Regards, > Ankit Jain > Qualcomm India Private Limited, on behalf of Qualcomm Innovation > Center, Inc. > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a > Linux Foundation Collaborative Project