From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751889AbdEUHsm (ORCPT ); Sun, 21 May 2017 03:48:42 -0400 Received: from mx2.suse.de ([195.135.220.15]:60537 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750994AbdEUHsl (ORCPT ); Sun, 21 May 2017 03:48:41 -0400 Date: Sun, 21 May 2017 09:48:37 +0200 From: Michal Hocko To: Wei Yongjun Cc: jinqian@android.com, gregkh@linuxfoundation.org, lstoakes@gmail.com, jack@suse.cz, christian.koenig@amd.com, Wei Yongjun , linux-kernel@vger.kernel.org Subject: Re: [PATCH] goldfish_pipe: use GFP_ATOMIC under spin lock Message-ID: <20170521074836.GA24459@dhcp22.suse.cz> References: <20170521004546.29795-1-weiyj.lk@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170521004546.29795-1-weiyj.lk@gmail.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun 21-05-17 00:45:46, Wei Yongjun wrote: > From: Wei Yongjun > > The function get_free_pipe_id_locked() is called from > goldfish_pipe_open() with a lock is held, so we should > use GFP_ATOMIC instead of GFP_KERNEL. Why is GFP_NOWAIT insufficient? Does this path needs an access to memory reserves? > Signed-off-by: Wei Yongjun > --- > drivers/platform/goldfish/goldfish_pipe.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/platform/goldfish/goldfish_pipe.c b/drivers/platform/goldfish/goldfish_pipe.c > index 2de1e60..5f36721 100644 > --- a/drivers/platform/goldfish/goldfish_pipe.c > +++ b/drivers/platform/goldfish/goldfish_pipe.c > @@ -704,7 +704,7 @@ static int get_free_pipe_id_locked(struct goldfish_pipe_dev *dev) > /* Reallocate the array */ > u32 new_capacity = 2 * dev->pipes_capacity; > struct goldfish_pipe **pipes = > - kcalloc(new_capacity, sizeof(*pipes), GFP_KERNEL); > + kcalloc(new_capacity, sizeof(*pipes), GFP_ATOMIC); > if (!pipes) > return -ENOMEM; > memcpy(pipes, dev->pipes, sizeof(*pipes) * dev->pipes_capacity); > -- Michal Hocko SUSE Labs