From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83A40C2BA19 for ; Mon, 6 Apr 2020 14:25:34 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4351623106 for ; Mon, 6 Apr 2020 14:25:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="qsf6frp3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4351623106 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id CDE378E002F; Mon, 6 Apr 2020 10:25:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C8ECC8E000D; Mon, 6 Apr 2020 10:25:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BA39A8E002F; Mon, 6 Apr 2020 10:25:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0154.hostedemail.com [216.40.44.154]) by kanga.kvack.org (Postfix) with ESMTP id A1F808E000D for ; Mon, 6 Apr 2020 10:25:33 -0400 (EDT) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 631A08248047 for ; Mon, 6 Apr 2020 14:25:33 +0000 (UTC) X-FDA: 76677653346.16.road08_135e79f45eb1e X-HE-Tag: road08_135e79f45eb1e X-Filterd-Recvd-Size: 3423 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf33.hostedemail.com (Postfix) with ESMTP for ; Mon, 6 Apr 2020 14:25:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=vSfhzfn3pJ+A9LrWYl7Sq/i20fWW8ottExFsJvoqKyM=; b=qsf6frp3mVyJhZ0t8WRsY+c1jf yRSSx2ziJ9nLEsaNFo3CvqG+ZAXPoaIAYrto8uFcFkPYZXcVcG1HDfSQkcJzJN4iqkjIKq3M60881 65uDfHnhJd0z/22v8VEIX+RyhHP8VHH97t7TMBx3CKcgRbKF41Fpu40owwjC1GIEzGcF1UhsotNMR awnLmDJjVN7cgk/qPO1PZ12or65wh0ZsLVdcZmSxog/aayNWWfhqSHU+CP5yCF8FiVM6BhH3A1CmA ZuPAOqyTYATkYQWd3EM96P+UduDzQQb4QhKMv7eR/j1t3Wldk8zt+j0vwnQY2Kw89bCHpyRNTbwSe JRboJmyw==; Received: from willy by bombadil.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1jLSgs-0005T4-Hx; Mon, 06 Apr 2020 14:25:30 +0000 Date: Mon, 6 Apr 2020 07:25:30 -0700 From: Matthew Wilcox To: Yafang Shao Cc: Johannes Weiner , Michal Hocko , Vladimir Davydov , Andrew Morton , Linux MM Subject: Re: [PATCH] mm, memcg: fix error return value of mem_cgroup_alloc() Message-ID: <20200406142530.GC21484@bombadil.infradead.org> References: <1586177647-11889-1-git-send-email-laoar.shao@gmail.com> <20200406130533.GZ21484@bombadil.infradead.org> <20200406141153.GB21484@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Apr 06, 2020 at 10:16:56PM +0800, Yafang Shao wrote: > On Mon, Apr 6, 2020 at 10:11 PM Matthew Wilcox wrote: > > > > On Mon, Apr 06, 2020 at 10:09:55PM +0800, Yafang Shao wrote: > > > What about ida_alloc_range() ? Should we correct it as well ? > > > > > > > > > * Return: The allocated ID, or %-ENOMEM if memory could not be allocated, > > > * or %-ENOSPC if there are no free IDs. > > > */ > > > int ida_alloc_range(struct ida *ida, unsigned int min, unsigned int max, > > > gfp_t gfp) > > > > > > If there're no free IDs, ida_alloc_range() also returns ENOSPC. > > > > Do you want to check all the callers of ida_.*alloc()? > > Sorry, I can't your point. Changing the value returned by ida_alloc_range() would require checking every caller to see if it would break anything. That's why I didn't change it when I rewrote it. > I just find the mem_cgroup_css_alloc() will use ida too. > mem_cgroup_css_alloc > memcg_online_kmem > memcg_alloc_cache_id > ida_simple_get > > I think we should keep the behavior consistent here. ENOSPC doesn't make much sense here. So I'd do: id = ida_simple_get(&memcg_cache_ida, 0, MEMCG_CACHES_MAX_SIZE, GFP_KERNEL); + if (id == -ENOSPC) + return -EBUSY; if (id < 0) return id;