All of lore.kernel.org
 help / color / mirror / Atom feed
From: Li Zefan <lizf@cn.fujitsu.com>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: Paul Menage <menage@google.com>,
	containers@lists.linux-foundation.org, linux-mm@kvack.org,
	Andrew Morton <akpm@linux-foundation.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Balbir Singh <balbir@linux.vnet.ibm.com>,
	Pavel Emelyanov <xemul@openvz.org>,
	Dan Malek <dan@embeddedalley.com>,
	Vladislav Buzov <vbuzov@embeddedalley.com>,
	Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
	Alexander Shishkin <virtuoso@slind.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 1/4] cgroup: implement eventfd-based generic API for notifications
Date: Fri, 08 Jan 2010 08:55:40 +0800	[thread overview]
Message-ID: <4B46828C.5000703@cn.fujitsu.com> (raw)
In-Reply-To: <cc557aab1001070436w446ef85n55dd2af5e733f55e@mail.gmail.com>

Kirill A. Shutemov wrote:
> On Thu, Jan 7, 2010 at 3:01 AM, Paul Menage <menage@google.com> wrote:
>> On Wed, Dec 30, 2009 at 7:57 AM, Kirill A. Shutemov
>> <kirill@shutemov.name> wrote:
>>> +
>>> +       if (!IS_ERR(efile))
>>> +               fput(efile);
>> While this is OK currently, it's a bit fragile. efile starts as NULL,
>> and IS_ERR(NULL) is false. So if we jump to fail: before trying to do
>> the eventfd_fget() then we'll try to fput(NULL), which will oops. This
>> works because we don't currently jump to fail: until after
>> eventfd_fget(), but someone could add an extra setup step between the
>> kzalloc() and the eventfd_fget() which could fail.
> 
> So we need to use IS_ERR_OR_NULL here instread of IS_ERR, don't we?
> 

Use multi labels is much better:

label4::
	fput(cfile);
label3:
	eventfd_ctx_put(event->eventfd);
label2:
	fput(efile);
label1:
	kfree(event);

compared to:

+fail:
+	if (!IS_ERR(cfile))
+		fput(cfile);
+
+	if (event && event->eventfd && !IS_ERR(event->eventfd))
+		eventfd_ctx_put(event->eventfd);
+
+	if (!IS_ERR(efile))
+		fput(efile);
+
+	kfree(event);


WARNING: multiple messages have this Message-ID (diff)
From: Li Zefan <lizf@cn.fujitsu.com>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: Paul Menage <menage@google.com>,
	containers@lists.linux-foundation.org, linux-mm@kvack.org,
	Andrew Morton <akpm@linux-foundation.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Balbir Singh <balbir@linux.vnet.ibm.com>,
	Pavel Emelyanov <xemul@openvz.org>,
	Dan Malek <dan@embeddedalley.com>,
	Vladislav Buzov <vbuzov@embeddedalley.com>,
	Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
	Alexander Shishkin <virtuoso@slind.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 1/4] cgroup: implement eventfd-based generic API for notifications
Date: Fri, 08 Jan 2010 08:55:40 +0800	[thread overview]
Message-ID: <4B46828C.5000703@cn.fujitsu.com> (raw)
In-Reply-To: <cc557aab1001070436w446ef85n55dd2af5e733f55e@mail.gmail.com>

Kirill A. Shutemov wrote:
> On Thu, Jan 7, 2010 at 3:01 AM, Paul Menage <menage@google.com> wrote:
>> On Wed, Dec 30, 2009 at 7:57 AM, Kirill A. Shutemov
>> <kirill@shutemov.name> wrote:
>>> +
>>> +       if (!IS_ERR(efile))
>>> +               fput(efile);
>> While this is OK currently, it's a bit fragile. efile starts as NULL,
>> and IS_ERR(NULL) is false. So if we jump to fail: before trying to do
>> the eventfd_fget() then we'll try to fput(NULL), which will oops. This
>> works because we don't currently jump to fail: until after
>> eventfd_fget(), but someone could add an extra setup step between the
>> kzalloc() and the eventfd_fget() which could fail.
> 
> So we need to use IS_ERR_OR_NULL here instread of IS_ERR, don't we?
> 

Use multi labels is much better:

label4::
	fput(cfile);
label3:
	eventfd_ctx_put(event->eventfd);
label2:
	fput(efile);
label1:
	kfree(event);

compared to:

+fail:
+	if (!IS_ERR(cfile))
+		fput(cfile);
+
+	if (event && event->eventfd && !IS_ERR(event->eventfd))
+		eventfd_ctx_put(event->eventfd);
+
+	if (!IS_ERR(efile))
+		fput(efile);
+
+	kfree(event);

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2010-01-08  0:55 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-30 15:57 [PATCH v5 0/4] cgroup notifications API and memory thresholds Kirill A. Shutemov
2009-12-30 15:57 ` Kirill A. Shutemov
     [not found] ` <cover.1262186097.git.kirill-oKw7cIdHH8eLwutG50LtGA@public.gmane.org>
2009-12-30 15:57   ` [PATCH v5 1/4] cgroup: implement eventfd-based generic API for notifications Kirill A. Shutemov
2009-12-30 15:57   ` [PATCH v5 2/4] memcg: extract mem_group_usage() from mem_cgroup_read() Kirill A. Shutemov
2009-12-30 15:57   ` [PATCH v5 3/4] memcg: rework usage of stats by soft limit Kirill A. Shutemov
2009-12-30 15:57   ` [PATCH v5 4/4] memcg: implement memory thresholds Kirill A. Shutemov
2010-01-04  0:36   ` [PATCH v5 0/4] cgroup notifications API and " Balbir Singh
2009-12-30 15:57 ` [PATCH v5 1/4] cgroup: implement eventfd-based generic API for notifications Kirill A. Shutemov
2009-12-30 15:57   ` Kirill A. Shutemov
     [not found]   ` <9411cbdd545e1232c916bfef03a60cf95510016d.1262186098.git.kirill-oKw7cIdHH8eLwutG50LtGA@public.gmane.org>
2010-01-07  1:01     ` Paul Menage
2010-01-07  1:01   ` Paul Menage
2010-01-07  1:01     ` Paul Menage
     [not found]     ` <6599ad831001061701x72098dacn7a5d916418396e33-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-07 12:36       ` Kirill A. Shutemov
2010-01-07 12:36     ` Kirill A. Shutemov
2010-01-07 12:36       ` Kirill A. Shutemov
2010-01-08  0:55       ` Li Zefan [this message]
2010-01-08  0:55         ` Li Zefan
2010-01-08  1:05         ` Paul Menage
2010-01-08  1:05           ` Paul Menage
     [not found]         ` <4B46828C.5000703-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2010-01-08  1:05           ` Paul Menage
     [not found]       ` <cc557aab1001070436w446ef85n55dd2af5e733f55e-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-08  0:55         ` Li Zefan
2009-12-30 15:57 ` [PATCH v5 2/4] memcg: extract mem_group_usage() from mem_cgroup_read() Kirill A. Shutemov
2009-12-30 15:57   ` Kirill A. Shutemov
2009-12-30 15:57 ` [PATCH v5 3/4] memcg: rework usage of stats by soft limit Kirill A. Shutemov
2009-12-30 15:57   ` Kirill A. Shutemov
     [not found]   ` <03152dd4f660cff87b16bb581718b1c53d4775aa.1262186098.git.kirill-oKw7cIdHH8eLwutG50LtGA@public.gmane.org>
2010-01-03 23:56     ` KAMEZAWA Hiroyuki
2010-01-03 23:56   ` KAMEZAWA Hiroyuki
2010-01-03 23:56     ` KAMEZAWA Hiroyuki
2009-12-30 15:57 ` [PATCH v5 4/4] memcg: implement memory thresholds Kirill A. Shutemov
2009-12-30 15:57   ` Kirill A. Shutemov
2010-01-04  0:00   ` KAMEZAWA Hiroyuki
2010-01-04  0:00     ` KAMEZAWA Hiroyuki
     [not found]   ` <0e92010cf06de5cd860df92f22fddbd23ece8a87.1262186099.git.kirill-oKw7cIdHH8eLwutG50LtGA@public.gmane.org>
2010-01-04  0:00     ` KAMEZAWA Hiroyuki
2010-01-04  0:36 ` [PATCH v5 0/4] cgroup notifications API and " Balbir Singh
2010-01-04  0:36   ` Balbir Singh
     [not found]   ` <20100104003612.GF16187-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2010-01-04 10:15     ` Kirill A. Shutemov
2010-01-04 10:15   ` Kirill A. Shutemov
2010-01-04 10:15     ` Kirill A. Shutemov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B46828C.5000703@cn.fujitsu.com \
    --to=lizf@cn.fujitsu.com \
    --cc=akpm@linux-foundation.org \
    --cc=balbir@linux.vnet.ibm.com \
    --cc=containers@lists.linux-foundation.org \
    --cc=dan@embeddedalley.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kirill@shutemov.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=menage@google.com \
    --cc=nishimura@mxp.nes.nec.co.jp \
    --cc=vbuzov@embeddedalley.com \
    --cc=virtuoso@slind.org \
    --cc=xemul@openvz.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.