Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1055474imu; Thu, 13 Dec 2018 08:41:05 -0800 (PST) X-Google-Smtp-Source: AFSGD/W5fFxbqROmP3eI7AxsZLLkSsTwFosM0HT358glWcC/5Owm6TD9w5VYTR7dMdzwYyAq6SQQ X-Received: by 2002:a17:902:128c:: with SMTP id g12mr23174530pla.146.1544719265142; Thu, 13 Dec 2018 08:41:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544719265; cv=none; d=google.com; s=arc-20160816; b=TFwUyDnZUv62MTn8uAHxlWXhu+i1YZoVvhlw5D27AyLM6CRxa+FdfFCaqYz6/rjHeC PdD2ttPAKFAK1w3WqqNidCl8Cv/uhuLxVp46A9o4hnQ31RkXMiGAbMl9+9rL61781yUb 7aaWbjvpiU3xRg/xPdpCzMtnVKZKMqG4yEPobU+YFluCsT34h/Jt1bJ8rwl+PZGBSqoL b8PmPAVkaY5fLxF00ZGn+PNVa+aLQ9vXGnIPEcZ/Ztc3L99WeVfe6rDJYJ95cTT8W9/L 6qwGQ3WKb3sLDcoUFtVO9/LUBlxFeElN2dqjfuWYTltPnoN7RUB6E4EFxGoxGnJlarYL 1GdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:from:references:cc:to:subject; bh=sAUXxHOt5bja2xol36vauYuB7pBHY92CfBKq2cB+erM=; b=Lzb+jF/TpSE9NMzqZyxZoaZ7zV/V62qiEOVAXf6vVT1ZfRA7nFUVjPox9bYV7F5PkI vvECuCFqGRw00c38qvj1M0KRfbejt9MJSFAnRC5XS3+K/VFxeDxpSJyH8m1WrYrVRxzQ V1Gb4fKzOOximHqKBq8aB1fTu7qj6Yx3oJPNU0IbmeQUMu5wa5RywpkLVGYxDgPBtJPl RN3JMOdEfC1X8tZfBmJufJmzqIl6WmxE8pJ+EKEwlqtyGBr4f/tObiBt7izv3gpPrvEq CKeK691HQKHS7NKNssjvOUsamycr+L4otVtwYOD/WWCNOXo7qWJwEMmhfSznCFvyXI0q eGKQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j21si1606814pll.150.2018.12.13.08.40.45; Thu, 13 Dec 2018 08:41:05 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729232AbeLMQj2 (ORCPT + 99 others); Thu, 13 Dec 2018 11:39:28 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38446 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727579AbeLMQj2 (ORCPT ); Thu, 13 Dec 2018 11:39:28 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E8759307CDD6; Thu, 13 Dec 2018 16:39:27 +0000 (UTC) Received: from jlaw-desktop.bos.csb (dhcp-17-208.bos.redhat.com [10.18.17.208]) by smtp.corp.redhat.com (Postfix) with ESMTP id 28BC76012B; Thu, 13 Dec 2018 16:39:26 +0000 (UTC) Subject: Re: [PATCH 2/2 V2] livepatch: handle kzalloc failure properly To: Nicholas Mc Guire Cc: Nicholas Mc Guire , Josh Poimboeuf , Jessica Yu , Jiri Kosina , Miroslav Benes , Petr Mladek , live-patching@vger.kernel.org, linux-kernel@vger.kernel.org References: <1544709956-16701-1-git-send-email-hofrat@osadl.org> <1544709956-16701-2-git-send-email-hofrat@osadl.org> <20181213153954.GA9816@osadl.at> From: Joe Lawrence Organization: Red Hat Message-ID: <2d712c92-e661-a32c-06cf-4de93ad93f77@redhat.com> Date: Thu, 13 Dec 2018 11:39:25 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <20181213153954.GA9816@osadl.at> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Thu, 13 Dec 2018 16:39:28 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 12/13/2018 10:39 AM, Nicholas Mc Guire wrote: > On Thu, Dec 13, 2018 at 09:14:18AM -0500, Joe Lawrence wrote: >> On 12/13/2018 09:05 AM, Nicholas Mc Guire wrote: >>> kzalloc() return should be checked. On dummy_alloc() failing >>> in kzalloc() NULL should be returned. >>> >>> Signed-off-by: Nicholas Mc Guire >>> --- >>> >>> Problem was located with an experimental coccinelle script >>> >>> V2: returning NULL is ok but not without cleanup - thanks to >>> Petr Mladek for catching this. >>> >>> Patch was compile tested with: x86_64_defconfig + FTRACE=y >>> FUNCTION_TRACER=y, EXPERT=y, LATENCYTOP=y, SAMPLES=y, SAMPLE_LIVEPATCH=y >>> (with a number of unrelated sparse warnings on symbols not being static) >>> >>> Patch is against 4.20-rc6 (localversion-next is next-20181213) >>> >>> samples/livepatch/livepatch-shadow-mod.c | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/samples/livepatch/livepatch-shadow-mod.c b/samples/livepatch/livepatch-shadow-mod.c >>> index 4c54b25..4aa8a88 100644 >>> --- a/samples/livepatch/livepatch-shadow-mod.c >>> +++ b/samples/livepatch/livepatch-shadow-mod.c >>> @@ -118,6 +118,10 @@ noinline struct dummy *dummy_alloc(void) >>> >>> /* Oops, forgot to save leak! */ >>> leak = kzalloc(sizeof(int), GFP_KERNEL); >>> + if (!leak) { >>> + kfree(d); >>> + return NULL; >>> + } >>> >>> pr_info("%s: dummy @ %p, expires @ %lx\n", >>> __func__, d, d->jiffies_expire); >>> >> >> Hi Nicholas, >> >> Thanks for finding and fixing these up... can we either squash these two >> patches into a single commit or give them unique subject lines? Code >> looks good (including Petr's suggested fix) otherwise. >> > yup - makes sense to pop it into a single patch - I assumed that this > would not be acceptable - so I actually split it up :) > I´ll send a V3 then. I don't know if there is a hard rule, but I always thought that unique subject lines were desired to avoid grep/search confusion. As far as one or two commits, I'd prefer a single commit since these are so small. Personal preference, you could just say that you're fixing samples/livepatch as a whole. > > BTW: wanted to fix up the sparse warnings but I think thats not going > to be that simple as the functions/structs sparse complains about > are actually being shared: Ok, these are welcome too, separate commit... > CHECK samples/livepatch/livepatch-shadow-fix1.c > samples/livepatch/livepatch-shadow-fix1.c:74:14: warning: symbol 'livepatch_fix1_dummy > alloc' was not declared. Should it be static? > samples/livepatch/livepatch-shadow-fix1.c:116:6: warning: symbol 'livepatch_fix1_dummy > free' was not declared. Should it be static? > > CHECK samples/livepatch/livepatch-shadow-mod.c > samples/livepatch/livepatch-shadow-mod.c:99:1: warning: symbol 'dummy_list' was not declared. Should it be static? > samples/livepatch/livepatch-shadow-mod.c:100:1: warning: symbol 'dummy_list_mutex' was not declared. Should it be static? > samples/livepatch/livepatch-shadow-mod.c:107:23: warning: symbol 'dummy_alloc' was not declared. Should it be static? > samples/livepatch/livepatch-shadow-mod.c:132:15: warning: symbol 'dummy_free' was not declared. Should it be static? > samples/livepatch/livepatch-shadow-mod.c:140:15: warning: symbol 'dummy_check' was not declared. Should it be static? > > so to clean that appropriate declarations should probably > go into a .h file. Technically its maybe not important as this > is not production code - it would though be nice if sample > code is sparse/smatch/cocci clean. > > would it be acceptable to clean this up with an additional > livepatch-shadow-mod.h ? I'm not a C language expert, but as I understand it: static functions are only a namespacing game for the compiler. So I think it is safe to pass around and call function pointers to static functions between compilation units. At least I see this throughout the kernel, so that is my assumption :) -- Joe