From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 443DA156F3A for ; Fri, 7 Feb 2025 03:17:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738898265; cv=none; b=LhoVEdlLbV/zIIJjsgQH4gKe/8PLAIqxCBzc5eUZBBE70wTElcr/+5MTGGMCdmcBFf9+OUz2vVtB8H5GVrBokpDS4wgjW/lyxozq9ixGc1ZRW2F31cBFUd7yAi/r8GcPyts3MLbe19w3cgt4+zKEqE2y2tq5cY7VTra6xrAUnDg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738898265; c=relaxed/simple; bh=d8e0o0wSxL/dVGXDd1e+mj3fKwYGnWjWkJ44eMw101o=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=MPMartyhJ8NX/DAZItntWh3JglWHvKa1bgUjDx1g+CL8keFJVsKEfuLQP00L7K8jWVGsvQ4AFX8x7VtlR7OMuMJ5md3Dl3pbmAB3C2gN97nWRjsIY3AIi81ItDcoBhQJGEN/WS8ZYN7Ys0bA4w5RPGQR8owsTRcVe0oMdmfWiFc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=NjgDigKs; arc=none smtp.client-ip=192.198.163.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="NjgDigKs" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1738898263; x=1770434263; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=d8e0o0wSxL/dVGXDd1e+mj3fKwYGnWjWkJ44eMw101o=; b=NjgDigKsL13A9Em+sPWJRfrimQFinCT/a86GTLU86YVkt0+14jLYF9n1 aPRsEZYV7ODOZEiNkBOLyKD3c3Cqty01CY7PlqB8Fo9f1KtEf2p80/YWK 30ynAc2OmgghU/0bo7Tpt8lLsx9dwU0EnPpOr18cyf5K6UoXRPZRV7mJm qGGdVgSjo3wPTwqhoddqb2FnxsdgIOzxSes0iM/75kPD4TCF8OBlaIP2G KLGsw1bJWbMcToqfeuh3YubMc1LvxRjPCweTHy9UJF+Vs4Qwn4kEkYsqi usTyq2uj3S4DiuN8Mt+5wPB6rU+DOtc0CZd4Q/vd6UyMKSi0BSd8QjZWz A==; X-CSE-ConnectionGUID: 8vhti7WCTZSf337ViGGjWw== X-CSE-MsgGUID: ezgNd6bVTp6iCJYmhta7ZA== X-IronPort-AV: E=McAfee;i="6700,10204,11336"; a="50169983" X-IronPort-AV: E=Sophos;i="6.13,266,1732608000"; d="scan'208";a="50169983" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2025 19:17:42 -0800 X-CSE-ConnectionGUID: Z1z0TVIpTcSGcv8Pp2HKYg== X-CSE-MsgGUID: NlrS1P4FTCaiK8qrai3f0w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,224,1728975600"; d="scan'208";a="142278482" Received: from aschofie-mobl2.amr.corp.intel.com (HELO localhost) ([10.125.110.243]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2025 19:17:41 -0800 From: alison.schofield@intel.com To: smatch@vger.kernel.org Cc: Alison Schofield , ira.weiny@intel.com Subject: [PATCH] kernel-printf: add printf format %pra for struct range Date: Thu, 6 Feb 2025 19:17:33 -0800 Message-ID: <20250207031736.1693607-1-alison.schofield@intel.com> X-Mailer: git-send-email 2.47.0 Precedence: bulk X-Mailing-List: smatch@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Alison Schofield A new kernel printf specifier was added for struct range. Since it shares the %pr with the existing struct resource format, new usages lead to smatch warnings. Explicitly check this new format. Signed-off-by: Alison Schofield --- check_kernel_printf.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/check_kernel_printf.c b/check_kernel_printf.c index b92ac760a335..da70030ae846 100644 --- a/check_kernel_printf.c +++ b/check_kernel_printf.c @@ -484,6 +484,17 @@ static void resource_string(const char *fmt, struct symbol *type, struct symbol sm_warning("'%%p%c' cannot be followed by '%c'", fmt[0], fmt[1]); } +static void range_string(const char *fmt, struct symbol *type, struct symbol *basetype, int vaidx) +{ + assert(fmt[0] == 'r' && fmt[1] == 'a'); + if (!is_struct_tag(basetype, "range")) { + sm_error("'%%p%c' expects argument of type struct range *, " + "but argument %d has type '%s'", fmt[0], vaidx, type_to_str(type)); + } + if (isalnum(fmt[2])) + sm_warning("'%%p%c%c' cannot be followed by '%c'", fmt[0], fmt[1], fmt[2]); +} + static void mac_address_string(const char *fmt, struct symbol *type, struct symbol *basetype, int vaidx) { assert(tolower(fmt[0]) == 'm'); @@ -734,9 +745,14 @@ pointer(const char *fmt, struct expression *arg, int vaidx) break; case 'R': - case 'r': resource_string(fmt, type, basetype, vaidx); break; + case 'r': + if (fmt[1] == 'a') + range_string(fmt, type, basetype, vaidx); + else + resource_string(fmt, type, basetype, vaidx); + break; case 'M': case 'm': mac_address_string(fmt, type, basetype, vaidx); base-commit: b84a20732d9473a62627d89b5eea4f98b3640283 -- 2.37.3