Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754352AbbKQRNY (ORCPT ); Tue, 17 Nov 2015 12:13:24 -0500 Received: from www62.your-server.de ([213.133.104.62]:56308 "EHLO www62.your-server.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751218AbbKQRNW (ORCPT ); Tue, 17 Nov 2015 12:13:22 -0500 Message-ID: <564B602F.2020302@iogearbox.net> Date: Tue, 17 Nov 2015 18:13:19 +0100 From: Daniel Borkmann User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: SF Markus Elfring , netdev@vger.kernel.org, "David S. Miller" CC: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Julia Lawall , eric.dumazet@gmail.com Subject: Re: [PATCH] net-scm: Delete an unnecessary check before the function call "kfree" References: <5307CAA2.8060406@users.sourceforge.net> <530A086E.8010901@users.sourceforge.net> <530A72AA.3000601@users.sourceforge.net> <530B5FB6.6010207@users.sourceforge.net> <530C5E18.1020800@users.sourceforge.net> <530CD2C4.4050903@users.sourceforge.net> <530CF8FF.8080600@users.sourceforge.net> <530DD06F.4090703@users.sourceforge.net> <5317A59D.4@users.sourceforge.net> <564B5937.1070707@users.sourceforge.net> In-Reply-To: <564B5937.1070707@users.sourceforge.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Authenticated-Sender: daniel@iogearbox.net Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1689 Lines: 44 On 11/17/2015 05:43 PM, SF Markus Elfring wrote: > From: Markus Elfring > Date: Tue, 17 Nov 2015 17:37:22 +0100 > > The kfree() function tests whether its argument is NULL and then > returns immediately. Thus the test around the call is not needed. > > This issue was detected by using the Coccinelle software. > > Signed-off-by: Markus Elfring > --- > net/core/scm.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/core/scm.c b/net/core/scm.c > index 3b6899b..4f64173 100644 > --- a/net/core/scm.c > +++ b/net/core/scm.c > @@ -193,7 +193,7 @@ int __scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *p) > } > } > > - if (p->fp && !p->fp->count) > + if (likely(!p->fp->count)) > { > kfree(p->fp); > p->fp = NULL; > Really, I don't like your blind, silly removals everywhere throughout the kernel tree for these tests. Eric already mentioned that in some situations where it's critical, it actually slows down the code, i.e. you'll have an extra function call to get there and inside kfree() / kfree_skb() / etc, the test is actually marked as unlikely(). Anyway, I think this one in particular could throw a NULL pointer deref. You even say in your commit message "kfree() function tests whether its argument [p->fp] is NULL" and yet if that is the case then, you already deref'ed on the p->fp->count test ??? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/