Received: by 10.223.185.116 with SMTP id b49csp3185182wrg; Mon, 12 Feb 2018 22:25:01 -0800 (PST) X-Google-Smtp-Source: AH8x227Xt2cwuI0xd1uSoa4IYlbOeySmxjpCbieSNNc2gfo/sixOW+XX/MtJt1MH9mD94AAae+0t X-Received: by 10.98.207.198 with SMTP id b189mr185726pfg.148.1518503101475; Mon, 12 Feb 2018 22:25:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518503101; cv=none; d=google.com; s=arc-20160816; b=Ws9eSNsDHK7o5lpK2Mxz+LVqzrTeE2PKCLEUUV7HmEbVNznQs2MXtfoxVLCt90o17A eQb2ILDgv/WfXkrbUPhRUwYi9a8kVjPHSidVRXhrT4DYSwPYATXtj1JxtojtvxW9Gx2t hW6zq1AZqkdUrBRtbvzjktDQU614iujFUTtz8yTDQ3fNO/py5tPKPrL6oz1z3AfyZwKh Lea+4QD8f2FCCAK/jOniCwTZtPw9gW+ia3ba6H9uHSd3L3vREDBXxMbbuEFiQFr66U1j w+tb68ADYs2zkXExN2/nwfVOBbJVu/joKJ5odz4BNPpg8xZugwW1FB9On56dE8+CSxVO 2Brg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from:arc-authentication-results; bh=Wg57oOFz2oGJFWrNMfYX9WQKvImY8T06cXbztrDA/KI=; b=lr9Dp9F4iIwXqELNFZB2ZmOJ6P3aJ3g6zAYB/RPiGVwCKeyELVvNjHx4TkULfhs7vN XmfWpYsN27o7Z8UaDrDRLByq790WRrFfQljoaw4LT4gn4l8twnYLTvhcRA6x5d4LH4bG 6TXDiv+wzYUGw6cyT/pZ3ssIZB0el/UrsMPqcca489YPxrwXo6mZADJ1kuwivlRUW2y4 k8xYsftrgmd8+SzDh6S4Ci/bV7oX7d7HUCbl1MkSV70995GodtFrOIlqN+oTcQORJfjP fXZTU3Q0N7kjM49umJz2JP2t3g5WtcYBkZ9hXkRd3/YaXOH6pMWDPPBogqxRaDE4Hf/j HQag== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q17si722372pgv.144.2018.02.12.22.24.34; Mon, 12 Feb 2018 22:25:01 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933455AbeBMGXi (ORCPT + 99 others); Tue, 13 Feb 2018 01:23:38 -0500 Received: from mx01.hxt-semitech.com.96.203.223.in-addr.arpa ([223.203.96.7]:38244 "EHLO barracuda.hxt-semitech.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S933434AbeBMGXf (ORCPT ); Tue, 13 Feb 2018 01:23:35 -0500 X-ASG-Debug-ID: 1518503006-093b7e4b503e450001-xx1T2L Received: from HXTBJIDCEMVIW01.hxtcorp.net (localhost [10.128.0.14]) by barracuda.hxt-semitech.com with ESMTP id qNVaftACGBElTPLf (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 13 Feb 2018 14:23:26 +0800 (CST) X-Barracuda-Envelope-From: shunyong.yang@hxt-semitech.com Received: from y.localdomain (10.5.21.109) by HXTBJIDCEMVIW01.hxtcorp.net (10.128.0.14) with Microsoft SMTP Server (TLS) id 15.0.847.32; Tue, 13 Feb 2018 14:23:25 +0800 From: Shunyong Yang To: CC: , , Shunyong Yang , Andy Shevchenko , Joey Zheng Subject: [PATCH] vsprintf: replace space with readable '=' before crng is ready Date: Tue, 13 Feb 2018 14:20:48 +0800 X-ASG-Orig-Subj: [PATCH] vsprintf: replace space with readable '=' before crng is ready Message-ID: <1518502848-7694-1-git-send-email-shunyong.yang@hxt-semitech.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.5.21.109] X-ClientProxiedBy: HXTBJIDCEMVIW01.hxtcorp.net (10.128.0.14) To HXTBJIDCEMVIW01.hxtcorp.net (10.128.0.14) X-Barracuda-Connect: localhost[10.128.0.14] X-Barracuda-Start-Time: 1518503006 X-Barracuda-Encrypted: ECDHE-RSA-AES256-SHA X-Barracuda-URL: https://192.168.50.101:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at hxt-semitech.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5232 1.0000 0.7500 X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.47864 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Before crng is ready, output of "%p" composes of "(ptrval)" and left padding spaces for alignment as no random address can be generated. This seems a little strange when default string width is larger than strlen("(ptrval)"). For example, when irq domain names are built with "%p", the nodes under /sys/kernel/debug/irq/domains like this on AArch64 system, [root@y irq]# ls domains/ default irqchip@ (ptrval)-2 irqchip@ (ptrval)-4 \_SB_.TCS0.QIC1 \_SB_.TCS0.QIC3 irqchip@ (ptrval) irqchip@ (ptrval)-3 \_SB_.TCS0.QIC0 \_SB_.TCS0.QIC2 The name "irqchip@ (ptrval)-2" is not so readable in console output. This patch replaces space with readable "=" when output needs padding. Following is the output after applying the patch, [root@y domains]# ls default irqchip@(====ptrval====)-2 irqchip@(====ptrval====)-4 \_SB_.TCS0.QIC1 \_SB_.TCS0.QIC3 irqchip@(====ptrval====) irqchip@(====ptrval====)-3 \_SB_.TCS0.QIC0 \_SB_.TCS0.QIC2 There is same problem in some subsystem's dmesg output. Moreover, someone may call "%p" in a similar case. In addition, the timing of crng initialization done may vary on different system. So, the change is made in vsprintf.c. Link: https://patchwork.kernel.org/patch/10185199/ Cc: Andy Shevchenko Cc: Joey Zheng Suggested-by: Rasmus Villemoes Signed-off-by: Shunyong Yang --- lib/vsprintf.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 77ee6ced11b1..9fdc8376752a 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1700,9 +1700,25 @@ static char *ptr_to_id(char *buf, char *end, void *ptr, struct printf_spec spec) const int default_width = 2 * sizeof(ptr); if (unlikely(!have_filled_random_ptr_key)) { + char *ptrval_str = "(ptrval)"; + char str[default_width + 1]; + int len = strlen(ptrval_str); + + if (default_width > len) { + int pos; + + pos = (default_width - len) / 2; + memset(str, '=', default_width); + memcpy(str + pos + 1, ptrval_str + 1, len - 2); + str[0] = '('; + str[default_width - 1] = ')'; + str[default_width] = 0; + ptrval_str = str; + } + spec.field_width = default_width; /* string length must be less than default_width */ - return string(buf, end, "(ptrval)", spec); + return string(buf, end, ptrval_str, spec); } #ifdef CONFIG_64BIT -- 1.8.3.1