From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751729AbdJIFE4 (ORCPT ); Mon, 9 Oct 2017 01:04:56 -0400 Received: from m50-138.163.com ([123.125.50.138]:51470 "EHLO m50-138.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750827AbdJIFEz (ORCPT ); Mon, 9 Oct 2017 01:04:55 -0400 X-Greylist: delayed 957 seconds by postgrey-1.27 at vger.kernel.org; Mon, 09 Oct 2017 01:04:54 EDT Subject: Re: [BUG] mm/vmalloc: ___might_sleep is called under a spinlock in __purge_vmap_area_lazy To: "Kirill A. Shutemov" References: <70f9850a-b24c-8595-8a22-9b47e96d6338@163.com> <20171009041001.p47yc6r7f3borhba@node.shutemov.name> Cc: akpm@linux-foundation.org, mhocko@suse.com, mingo@kernel.org, catalin.marinas@arm.com, labbott@redhat.com, thgarnie@google.com, kirill.shutemov@linux.intel.com, aryabinin@virtuozzo.com, ard.biesheuvel@linaro.org, zijun_hu@htc.com, linux-mm@kvack.org, Linux Kernel Mailing List From: Jia-Ju Bai Message-ID: <56ef9c88-ba54-ce01-15dc-7b661b64ab8b@163.com> Date: Mon, 9 Oct 2017 12:48:22 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <20171009041001.p47yc6r7f3borhba@node.shutemov.name> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-CM-TRANSID: C9GowAC3YgOP_9pZnac4Ag--.62S2 X-Coremail-Antispam: 1Uf129KBjvdXoW7Xr17tF15WFy7uryxWF45KFg_yoWfWrb_ua 10v397CFsYqrZxX3ZxJr9ag34xK3W8WFyUXrs5XFnrZry3ZFyakw1DAF1S9rWfAan7CF43 ur4rK3Zrur1akjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IU5Y_M3UUUUU== X-Originating-IP: [59.66.207.25] X-CM-SenderInfo: xedlyx5dmximizq6il2tof0z/xtbBRRhselO-9W6l8gAAsr Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Thanks for your reply and explanation :) I will improve my analysis. Thanks, Jia-Ju Bai On 2017/10/9 12:10, Kirill A. Shutemov wrote: > On Mon, Oct 09, 2017 at 12:00:33PM +0800, Jia-Ju Bai wrote: >> The ___might_sleep is called under a spinlock, and the function call graph >> is: >> __purge_vmap_area_lazy (acquire the spinlock) >> cond_resched_lock >> ___might_sleep >> >> In this situation, ___might_sleep may prints error log message because a >> spinlock is held. >> A possible fix is to remove ___might_sleep in cond_resched_lock. >> >> This bug is found by my static analysis tool and my code review. > This analysis doesn't makes sense. > > The point of cond_resched_lock() is that it drops the lock, if resched is > required. > > ___might_sleep() is called with preempt_offset equal to > PREEMPT_LOCK_OFFSET, so it won't report error if it's the only lock we > hold. >