Received: by 2002:a05:6359:6284:b0:131:369:b2a3 with SMTP id se4csp1303452rwb; Sat, 5 Aug 2023 11:33:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFfCE8CJIMFe0xsiinaKrNAsNK1MuCOym8J7GpdFNOWm63gmwK4wtOSl5opdkAvytP2i5uk X-Received: by 2002:a17:906:9bec:b0:99c:3bb:fd96 with SMTP id de44-20020a1709069bec00b0099c03bbfd96mr4747633ejc.52.1691260406561; Sat, 05 Aug 2023 11:33:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691260406; cv=none; d=google.com; s=arc-20160816; b=hHAS+oDVYFZwux8iE+cOQNDA2jUvjkx0tCcJuV1x1oPcjOiwiltb0QmNTsjutLeuhk FmHIxYDhsYrIMpcyYOkXbxuiI8pmYtymP17hIG9C1aaGP4CL1m2XoyJkozFF4MK9MzCO hk7pAqBgmUjo0AkerSOGucbYvOGIOqvAxdAlmIJDnLC/9gbWwlbdSnVfvTsKhIQGM+zO HAg9YwRuyDeQmndl3vI5WSN76t17qn4zQVL/vfUqK4JgTQrZdVI1UYupsikVBOCLa6/l NapppiHNUoZIirWtwS67e70GscsJFhZbkgGcPcO9cAZe3lARjX/7+YvLIGMsQbTWdy6M SZ8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=APFaLpzRvkmsd23+nAQve4IWVf1KVk54bqCwJXd8ZvA=; fh=RoWWTRK1ZrXNP/VtEBcCDaK18unRqwp2i1mhxrenPO0=; b=ivp+n7nJxXaVuhs+j6Tg6XWCEUVp2J0oFLdgy4LgWAaENKSH9KcSpdDapb7hXwAlmy 4fUFdsnGOnNbzEuVscOt9bvXYRm+c5HINezo1/k38GadIPC2LmPLs9wf86vmEuC7nQhF 7uIUKeIJYQ3hqtETf2GuL6IKi8JWWvgOJN4TSI9Pu8Z9rH31yG9p15Qefwhp5vGlM+Ms 0gUIDikJHcHCVg2QD4EQLjUwTO9PSMnCmfXYV5eUuraiOQ25k9itNThRzM/eIfCRjNCc wXu3iPAi9GrRCM90od79cLRE07COqfQ3U5MxkkL1ewSy3VcICzLMXDeKwH5KiL9s+kM6 lFHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=VktCQzVr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g13-20020a170906394d00b00997dfeb04a1si3608007eje.70.2023.08.05.11.33.02; Sat, 05 Aug 2023 11:33:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=VktCQzVr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229804AbjHERth (ORCPT + 99 others); Sat, 5 Aug 2023 13:49:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60406 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229449AbjHERtd (ORCPT ); Sat, 5 Aug 2023 13:49:33 -0400 Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 942F3DD for ; Sat, 5 Aug 2023 10:49:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1691257772; x=1722793772; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WwFlBTMWGP/2Noo8uToUlcYjMLDc5ySAvwUDql7sE7Y=; b=VktCQzVraHQflL90VqPaKT29niMae3bJ3bcYpuhKTEcLy/zfyV0fQWjt u1ltQK6AAYrX2MEg+R9XfQicleOZGR/dKivsbAgYlhxt4Xw5iTUl3uJlR fdUDIdLH/F232gA3cwhT9ocTkgXC9/BLwQmGrIqQAMqtc91WjZ2yR19Hc y0LuqmoP4ejM8M3UQLkHS+oUu4JCNvGaQK9PUs16dxLCjn7fFkZ1rAejG IFuzDSfVL660xj40lxaPhTmfkkW5X6w6CgZmoCMPA1wjXz7FyUGAgBdB3 gTTloxX0eowU/LELPXD4TtuW876rOpU99YAC1bZFF5kka9LWG7dYLsPHl w==; X-IronPort-AV: E=McAfee;i="6600,9927,10793"; a="350638993" X-IronPort-AV: E=Sophos;i="6.01,258,1684825200"; d="scan'208";a="350638993" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2023 10:49:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10793"; a="733622471" X-IronPort-AV: E=Sophos;i="6.01,258,1684825200"; d="scan'208";a="733622471" Received: from black.fi.intel.com ([10.237.72.28]) by fmsmga007.fm.intel.com with ESMTP; 05 Aug 2023 10:49:28 -0700 Received: by black.fi.intel.com (Postfix, from userid 1003) id 9F9D5BAB; Sat, 5 Aug 2023 20:50:29 +0300 (EEST) From: Andy Shevchenko To: Andy Shevchenko , Petr Mladek , Marco Elver , linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org Cc: Steven Rostedt , Rasmus Villemoes , Sergey Senozhatsky , Alexander Potapenko , Dmitry Vyukov , Andrew Morton Subject: [PATCH v2 2/3] lib/vsprintf: Split out sprintf() and friends Date: Sat, 5 Aug 2023 20:50:26 +0300 Message-Id: <20230805175027.50029-3-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.40.0.1.gaa8946217a0b In-Reply-To: <20230805175027.50029-1-andriy.shevchenko@linux.intel.com> References: <20230805175027.50029-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org kernel.h is being used as a dump for all kinds of stuff for a long time. sprintf() and friends are used in many drivers without need of the full kernel.h dependency train with it. Here is the attempt on cleaning it up by splitting out sprintf() and friends. Signed-off-by: Andy Shevchenko --- include/linux/kernel.h | 30 +----------------------------- include/linux/sprintf.h | 25 +++++++++++++++++++++++++ lib/test_printf.c | 1 + lib/vsprintf.c | 1 + 4 files changed, 28 insertions(+), 29 deletions(-) create mode 100644 include/linux/sprintf.h diff --git a/include/linux/kernel.h b/include/linux/kernel.h index b9e76f717a7e..cee8fe87e9f4 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -203,35 +204,6 @@ static inline void might_fault(void) { } void do_exit(long error_code) __noreturn; -extern int num_to_str(char *buf, int size, - unsigned long long num, unsigned int width); - -/* lib/printf utilities */ - -extern __printf(2, 3) int sprintf(char *buf, const char * fmt, ...); -extern __printf(2, 0) int vsprintf(char *buf, const char *, va_list); -extern __printf(3, 4) -int snprintf(char *buf, size_t size, const char *fmt, ...); -extern __printf(3, 0) -int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); -extern __printf(3, 4) -int scnprintf(char *buf, size_t size, const char *fmt, ...); -extern __printf(3, 0) -int vscnprintf(char *buf, size_t size, const char *fmt, va_list args); -extern __printf(2, 3) __malloc -char *kasprintf(gfp_t gfp, const char *fmt, ...); -extern __printf(2, 0) __malloc -char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); -extern __printf(2, 0) -const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args); - -extern __scanf(2, 3) -int sscanf(const char *, const char *, ...); -extern __scanf(2, 0) -int vsscanf(const char *, const char *, va_list); - -extern int no_hash_pointers_enable(char *str); - extern int get_option(char **str, int *pint); extern char *get_options(const char *str, int nints, int *ints); extern unsigned long long memparse(const char *ptr, char **retptr); diff --git a/include/linux/sprintf.h b/include/linux/sprintf.h new file mode 100644 index 000000000000..9ca23bcf9f42 --- /dev/null +++ b/include/linux/sprintf.h @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_KERNEL_SPRINTF_H_ +#define _LINUX_KERNEL_SPRINTF_H_ + +#include +#include + +int num_to_str(char *buf, int size, unsigned long long num, unsigned int width); + +__printf(2, 3) int sprintf(char *buf, const char * fmt, ...); +__printf(2, 0) int vsprintf(char *buf, const char *, va_list); +__printf(3, 4) int snprintf(char *buf, size_t size, const char *fmt, ...); +__printf(3, 0) int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); +__printf(3, 4) int scnprintf(char *buf, size_t size, const char *fmt, ...); +__printf(3, 0) int vscnprintf(char *buf, size_t size, const char *fmt, va_list args); +__printf(2, 3) __malloc char *kasprintf(gfp_t gfp, const char *fmt, ...); +__printf(2, 0) __malloc char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); +__printf(2, 0) const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args); + +__scanf(2, 3) int sscanf(const char *, const char *, ...); +__scanf(2, 0) int vsscanf(const char *, const char *, va_list); + +int no_hash_pointers_enable(char *str); + +#endif /* _LINUX_KERNEL_SPRINTF_H */ diff --git a/lib/test_printf.c b/lib/test_printf.c index 2ab09a0dc841..5adca19d34e2 100644 --- a/lib/test_printf.c +++ b/lib/test_printf.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include "../tools/testing/selftests/kselftest_module.h" diff --git a/lib/vsprintf.c b/lib/vsprintf.c index b17e0744a7bc..c89719586d0c 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include -- 2.40.0.1.gaa8946217a0b