Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755577AbbLDQql (ORCPT ); Fri, 4 Dec 2015 11:46:41 -0500 Received: from smtprelay0172.hostedemail.com ([216.40.44.172]:37818 "EHLO smtprelay.hostedemail.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754233AbbLDQqj (ORCPT ); Fri, 4 Dec 2015 11:46:39 -0500 X-Session-Marker: 6A6F6540706572636865732E636F6D X-Spam-Summary: 2,0,0,,d41d8cd98f00b204,joe@perches.com,:::::::,RULES_HIT:41:355:379:541:599:800:960:973:988:989:1260:1277:1311:1313:1314:1345:1359:1373:1431:1437:1515:1516:1518:1534:1542:1593:1594:1711:1730:1747:1777:1792:2194:2199:2393:2559:2562:2693:2828:3138:3139:3140:3141:3142:3355:3622:3865:3867:3868:3870:3871:3872:3874:4321:5007:6119:6261:7808:7903:8660:8957:9108:10004:10400:10848:11026:11232:11473:11658:11783:11889:11914:12043:12296:12517:12519:12555:12740:13148:13149:13230:13894:14659:21063:21080:21212:30012:30054:30070:30091,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:none,Custom_rules:0:0:0,LFtime:5,LUA_SUMMARY:none X-HE-Tag: alarm97_56ce001edbb16 X-Filterd-Recvd-Size: 3327 Message-ID: <1449247595.8611.1.camel@perches.com> Subject: Re: [PATCH] printk: fix pr_debug and pr_devel to elide function calls From: Joe Perches To: Aaron Conole , Jason Baron Cc: Andrew Morton , linux-kernel@vger.kernel.org Date: Fri, 04 Dec 2015 08:46:35 -0800 In-Reply-To: References: <1449182754-19088-1-git-send-email-aconole@redhat.com> <5661BFEE.1050103@akamai.com> Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: Evolution 3.18.2-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2609 Lines: 64 On Fri, 2015-12-04 at 11:38 -0500, Aaron Conole wrote: > Jason Baron writes: > > On 12/03/2015 05:45 PM, Aaron Conole wrote: > > > Currently, pr_debug and pr_devel will not elide function call arguments > > > appearing in calls to no_printk for these macros. This is because all > > > side effects must be honored before proceeding to the 0-value assignment > > > in no_printk. > > > > > > The behavior is contrary to documentation found in the CodingStyle and > > > header file where these functions are declared.? > > > > > > This patch corrects that behavior by shunting out the call to no_printk > > > completely. The format string is still checked by gcc for correctness, but > > > no code seems to be emitted in common cases. > > > > > > fixes commit 5264f2f75d86 ("include/linux/printk.h: use and neaten > > > no_printk") > > > > > > Signed-off-by: Aaron Conole > > > Reported-by: Dmitry Vyukov > > > Cc: Joe Perches > > > > I think we should just convert no_printk() to not emit anything. This > > will avoid us adding unwrapped calls to 'no_printk()' in the future, and > > I think makes the code more readable. Based on Joe's previous > > 'eliminated_printk()' thing. IE: > > > > diff --git a/include/linux/printk.h b/include/linux/printk.h > > index 9729565..58632bf 100644 > > --- a/include/linux/printk.h > > +++ b/include/linux/printk.h > > @@ -108,11 +108,11 @@ struct va_format { > > ? * Dummy printk for disabled debugging statements to use whilst maintaining > > ? * gcc's format and side-effect checking. > > ? */ > > -static inline __printf(1, 2) > > -int no_printk(const char *fmt, ...) > > -{ > > -???????return 0; > > -} > > +#define no_printk(fmt, ...)????????????????????\ > > +do {???????????????????????????????????????????\ > > +???????if (0)??????????????????????????????????\ > > +???????????????printk(fmt, ##__VA_ARGS__);?????\ > > +} while (0) > > > > ?#ifdef CONFIG_EARLY_PRINTK > > ?extern asmlinkage __printf(1, 2) > > > > Thanks, > > > > -Jason > > I like this fix the best, but reading some other upstream mails it seems > like that approach isn't likely to be accepted? I'll happily respin to > have your proposed code because it makes the most sense, if no one else > has any objections. I have no objections. 1995 was a good year. -- 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/