From nobody Sat Feb 7 11:31:54 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) (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 2931F15688F for ; Fri, 31 May 2024 09:05:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.7 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717146310; cv=none; b=IhytyJuRWMGwXx6ns5NJ3kpyl4OF6SSt4vo311Th7lNkq7GyBS3IsIPnBNsLyHVvjLKYwVr1UILsz4dtwm4YKYV6XFvFAxUP57hOcWHAKqx4rJhs54SzgRpBOPDTl9+A4AnZ8n0qKpt3s3RjPCZMNzHEqZJljzrIXoS0Pk33Q9Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717146310; c=relaxed/simple; bh=HC/iebU12r4tuo/bQ21zBgXZmHDhLCixcZMw3ZfNxMQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=r+zl1rkDvuh6osmouKY6Ak8GB9uho5j53JUAdlT6f+3pDHT80y+oTYgxZaJ5Vj0JZdalNs/kCaOd+HNrhfphXujuio5wttffiQkSWTTZJn6xrHfKPkuu2tSLc7HclSm81IKjPYSeYjr7bi7iG8KS/rIhM0ZPDE74tDxpi+6/eW4= 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=d22hFSf2; arc=none smtp.client-ip=192.198.163.7 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="d22hFSf2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1717146309; x=1748682309; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HC/iebU12r4tuo/bQ21zBgXZmHDhLCixcZMw3ZfNxMQ=; b=d22hFSf2iS5fBGIGn47z3rCR8Um2WnPfY9nQhkwf17jzo7zaySgkvsZM gmcwI45sNioMlWaixXk3Im7JrbZIKhILaD0ifLTSpXT6c/asZUj9QVvGV KNoPU3T3vAuUSRMq7a56CjaBxlDe0pdyqsalA/CnQgh8XV8xFF47zRlri OGROJooiKxxiz4qCKWrnEP6T6hkeUG5Uyysmme2Y5pL2m4BN9Fx75eyxh AdGovE9jJ3Qbud2hdtx18brtMBlVu930Jlsjeh9l/VStVU+SnOppBmrg1 4yAjXt7xXe3RyChWKuGGp36QqMmvIeTcyJt0m+lHatABZ9hhUhv9sNo/u w==; X-CSE-ConnectionGUID: X5+ftijOQCKGsg+ZWGK2mw== X-CSE-MsgGUID: qE+2nOELRl68D3as+2gMcg== X-IronPort-AV: E=McAfee;i="6600,9927,11088"; a="39074066" X-IronPort-AV: E=Sophos;i="6.08,203,1712646000"; d="scan'208";a="39074066" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2024 02:05:09 -0700 X-CSE-ConnectionGUID: m9Gq5WLzSc2KPusanhgQ+g== X-CSE-MsgGUID: sbEKQx1WTJCQaLM+lOXRqQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,203,1712646000"; d="scan'208";a="40543234" Received: from bergbenj-mobl1.ger.corp.intel.com (HELO localhost) ([10.245.246.190]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2024 02:05:07 -0700 From: Jani Nikula To: linux-kernel@vger.kernel.org Cc: jani.nikula@intel.com, Andrew Morton , Greg KH Subject: [PATCH 1/4] kernel/panic: return early from print_tainted() when not tainted Date: Fri, 31 May 2024 12:04:54 +0300 Message-Id: <01d6c03de1c9d1b52b59c652a3704a0a9886ed63.1717146197.git.jani.nikula@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Reduce indent to make follow-up changes slightly easier on the eyes. Cc: Andrew Morton Cc: Greg KH Signed-off-by: Jani Nikula Reviewed-by: Greg Kroah-Hartman --- kernel/panic.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/kernel/panic.c b/kernel/panic.c index 6df2ba08d5ae..5c9396418e1c 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -508,22 +508,23 @@ const struct taint_flag taint_flags[TAINT_FLAGS_COUNT= ] =3D { const char *print_tainted(void) { static char buf[TAINT_FLAGS_COUNT + sizeof("Tainted: ")]; + char *s; + int i; =20 BUILD_BUG_ON(ARRAY_SIZE(taint_flags) !=3D TAINT_FLAGS_COUNT); =20 - if (tainted_mask) { - char *s; - int i; - - s =3D buf + sprintf(buf, "Tainted: "); - for (i =3D 0; i < TAINT_FLAGS_COUNT; i++) { - const struct taint_flag *t =3D &taint_flags[i]; - *s++ =3D test_bit(i, &tainted_mask) ? - t->c_true : t->c_false; - } - *s =3D 0; - } else + if (!tainted_mask) { snprintf(buf, sizeof(buf), "Not tainted"); + return buf; + } + + s =3D buf + sprintf(buf, "Tainted: "); + for (i =3D 0; i < TAINT_FLAGS_COUNT; i++) { + const struct taint_flag *t =3D &taint_flags[i]; + *s++ =3D test_bit(i, &tainted_mask) ? + t->c_true : t->c_false; + } + *s =3D 0; =20 return buf; } --=20 2.39.2 From nobody Sat Feb 7 11:31:54 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) (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 76E65158878 for ; Fri, 31 May 2024 09:05:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.7 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717146315; cv=none; b=dOORs+D/1RSALmyvNgZQ5o+I0DTGcyZ+OW7WDDdr1owvK2cGtoRmJoNGF4Br8fQj0VwnQd++b/X/2y4cWglolCz3Ru+SYB+xH53iSGL43gUL4JaCphkFHwwa+RZoTH+o3ngirHe3EcBb2/5U7OuTX2RBeCi1DDJU46sAj9kGNX0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717146315; c=relaxed/simple; bh=TFgdIL/o05mXh9mn/TW+lrAw5f/LmbhsEY4ucnUQogs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NT8xaFZmAYScnYTg3d0zSBK/p8GnxoOfPv7jZ4PiJ5iRaTDDxfx1yftQNquAnDPBR8UUZWUotnsPu7x3YyV/WK/tGFV/xN+5ml0rY4tLGV0hx07BDL4HUlo2/mVU0sqbWCgO2/lLaJk+3G53TIBCMDx7dFtS8JPnKFEWPWjySFo= 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=l7J122fB; arc=none smtp.client-ip=192.198.163.7 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="l7J122fB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1717146314; x=1748682314; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TFgdIL/o05mXh9mn/TW+lrAw5f/LmbhsEY4ucnUQogs=; b=l7J122fBBGFjsZVXFSaBy4apA5ld+FKceBQbCk9FIqt8zO5tGLHA73Nn chpN9NcXOpEqs9rU3JzSo7rXEU24xMahfaUKmnjTOhHNpo6WBy7t/2qHW ICCVbX6ZCPscx3ScEj2FzhumfiiKKQ/nJleKIZiW9bJNM8IKmWXNpbYpn WgpdTc8F0SAWdMBmrl5QivvRxfrbvmV3zDOvDc8yvQPF55ky0H/bb9ekb 7Cu1DoXJpyreclKYlGLm/QMGXD4fQHuUQUYrMkSv518EesUYV2sZBpfRL E8xULbso2a7wF78C5UOh7rgZMdCA+Jp+zpAXgVMuzTmWCL2EC+g6a/gyN w==; X-CSE-ConnectionGUID: vzSRiIvRTHarPRm+hhm5dQ== X-CSE-MsgGUID: kh11MXO6QUSfYN9yl9AuOw== X-IronPort-AV: E=McAfee;i="6600,9927,11088"; a="39074070" X-IronPort-AV: E=Sophos;i="6.08,203,1712646000"; d="scan'208";a="39074070" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2024 02:05:14 -0700 X-CSE-ConnectionGUID: 411iwXpMQuSVAaztMpV0eQ== X-CSE-MsgGUID: xOKqWE8HQ+Gs8qdTnY/tPg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,203,1712646000"; d="scan'208";a="40543240" Received: from bergbenj-mobl1.ger.corp.intel.com (HELO localhost) ([10.245.246.190]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2024 02:05:12 -0700 From: Jani Nikula To: linux-kernel@vger.kernel.org Cc: jani.nikula@intel.com, Andrew Morton , Greg KH Subject: [PATCH 2/4] kernel/panic: convert print_tainted() to use struct seq_buf internally Date: Fri, 31 May 2024 12:04:55 +0300 Message-Id: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Convert print_tainted() to use struct seq_buf internally in order to be more aware of the buffer constraints as well as make it easier to extend in follow-up work. Cc: Andrew Morton Cc: Greg KH Signed-off-by: Jani Nikula Reviewed-by: Greg Kroah-Hartman --- kernel/panic.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/kernel/panic.c b/kernel/panic.c index 5c9396418e1c..b7b2fb8b3625 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include =20 @@ -497,6 +498,25 @@ const struct taint_flag taint_flags[TAINT_FLAGS_COUNT]= =3D { [ TAINT_TEST ] =3D { 'N', ' ', true }, }; =20 +static void print_tainted_seq(struct seq_buf *s) +{ + int i; + + if (!tainted_mask) { + seq_buf_puts(s, "Not tainted"); + return; + } + + seq_buf_printf(s, "Tainted: "); + for (i =3D 0; i < TAINT_FLAGS_COUNT; i++) { + const struct taint_flag *t =3D &taint_flags[i]; + bool is_set =3D test_bit(i, &tainted_mask); + char c =3D is_set ? t->c_true : t->c_false; + + seq_buf_putc(s, c); + } +} + /** * print_tainted - return a string to represent the kernel taint state. * @@ -508,25 +528,15 @@ const struct taint_flag taint_flags[TAINT_FLAGS_COUNT= ] =3D { const char *print_tainted(void) { static char buf[TAINT_FLAGS_COUNT + sizeof("Tainted: ")]; - char *s; - int i; + struct seq_buf s; =20 BUILD_BUG_ON(ARRAY_SIZE(taint_flags) !=3D TAINT_FLAGS_COUNT); =20 - if (!tainted_mask) { - snprintf(buf, sizeof(buf), "Not tainted"); - return buf; - } + seq_buf_init(&s, buf, sizeof(buf)); =20 - s =3D buf + sprintf(buf, "Tainted: "); - for (i =3D 0; i < TAINT_FLAGS_COUNT; i++) { - const struct taint_flag *t =3D &taint_flags[i]; - *s++ =3D test_bit(i, &tainted_mask) ? - t->c_true : t->c_false; - } - *s =3D 0; + print_tainted_seq(&s); =20 - return buf; + return seq_buf_str(&s); } =20 int test_taint(unsigned flag) --=20 2.39.2 From nobody Sat Feb 7 11:31:54 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) (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 DD778158A37 for ; Fri, 31 May 2024 09:05:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.7 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717146321; cv=none; b=vEF/iikVts0yvj6+SrnCmlDkADXCCLZJnmjqfjBan59xECwTmRHduYAYT+XKiM/GbGN/XwykE46uhFjLzkxWDPX0updVpOR6WNkAOQcdhM6WdOVcRc+FLOxMmU5cPDHfcLnctHidqnK5L0oW1l9AwrmvLxmdX7HBa+kOouJgrVs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717146321; c=relaxed/simple; bh=OPnQwap98xBOvs4o2m86J9Ax9g2AZnbnCVbcpM6vIJ0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e6GYP+0vAKk1oOB+U+LBNmnVwAXUNlxkPYyLptS/l7QERq5UzWqaUMV+jmFNNonuIiXrvubPUbOHDl6qQpIaHnLDQwaPOGmEgyivFk4JQvUX4isTjkGyi0AvnEhLCqDpH8MinLYRMhp2oeuSbyV/dyfsFMMdBNDjxPLejkWFjHY= 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=KHJdEKCc; arc=none smtp.client-ip=192.198.163.7 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="KHJdEKCc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1717146320; x=1748682320; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OPnQwap98xBOvs4o2m86J9Ax9g2AZnbnCVbcpM6vIJ0=; b=KHJdEKCcxhbaRpUQzMrzH3v7FgUH0JfG+2XMRHaIZV6pXvB4aUF8Wd0S VscKmZ+l+SpdNgmFoH4tps2GFWJg6bJzmXDB0NAuQsx4UPK7dvhSgNUL+ INfNQEezEsNO1v0pGaQI3HI3IeaXd7xPH1t2w3mqHPIC93MOiZxPgZQsl aiSAwXlMwHydlrStFrrTC7woomztP+3VQ7C4pI2BkW6x+EZIVEV8GTvx1 MHoQsLSa+dbSg1H4QReu52BceHmiUGxHQNTqSBPJRIxUyN1+kwhr4Vkmh W3+Ch1Rr2qbRGokMRw7xzQRoGsOQHtJ+7kw4TuwlWkscm8uRhipztGLNL g==; X-CSE-ConnectionGUID: omXNirCJSE2JI8VYEyXeTg== X-CSE-MsgGUID: CJNFdUlUTMGh7vCPVBhdrg== X-IronPort-AV: E=McAfee;i="6600,9927,11088"; a="39074080" X-IronPort-AV: E=Sophos;i="6.08,203,1712646000"; d="scan'208";a="39074080" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2024 02:05:19 -0700 X-CSE-ConnectionGUID: hLsLMt6fRJiqvdVEDx9SHQ== X-CSE-MsgGUID: m+mfIFVoSXiBYvm6tFRHRQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,203,1712646000"; d="scan'208";a="40543249" Received: from bergbenj-mobl1.ger.corp.intel.com (HELO localhost) ([10.245.246.190]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2024 02:05:18 -0700 From: Jani Nikula To: linux-kernel@vger.kernel.org Cc: jani.nikula@intel.com, Andrew Morton , Greg KH Subject: [PATCH 3/4] kernel/panic: initialize taint_flags[] using a macro Date: Fri, 31 May 2024 12:04:56 +0300 Message-Id: <8a2498285d37953cfad9dce939ed3abef61051bd.1717146197.git.jani.nikula@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Make it easier to extend struct taint_flags in follow-up. Cc: Andrew Morton Cc: Greg KH Signed-off-by: Jani Nikula Reviewed-by: Greg Kroah-Hartman --- kernel/panic.c | 46 +++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/kernel/panic.c b/kernel/panic.c index b7b2fb8b3625..8f7bb94ad7d8 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -472,32 +472,40 @@ void panic(const char *fmt, ...) =20 EXPORT_SYMBOL(panic); =20 +#define TAINT_FLAG(taint, _c_true, _c_false, _module) \ + [ TAINT_##taint ] =3D { \ + .c_true =3D _c_true, .c_false =3D _c_false, \ + .module =3D _module, \ + } + /* * TAINT_FORCED_RMMOD could be a per-module flag but the module * is being removed anyway. */ const struct taint_flag taint_flags[TAINT_FLAGS_COUNT] =3D { - [ TAINT_PROPRIETARY_MODULE ] =3D { 'P', 'G', true }, - [ TAINT_FORCED_MODULE ] =3D { 'F', ' ', true }, - [ TAINT_CPU_OUT_OF_SPEC ] =3D { 'S', ' ', false }, - [ TAINT_FORCED_RMMOD ] =3D { 'R', ' ', false }, - [ TAINT_MACHINE_CHECK ] =3D { 'M', ' ', false }, - [ TAINT_BAD_PAGE ] =3D { 'B', ' ', false }, - [ TAINT_USER ] =3D { 'U', ' ', false }, - [ TAINT_DIE ] =3D { 'D', ' ', false }, - [ TAINT_OVERRIDDEN_ACPI_TABLE ] =3D { 'A', ' ', false }, - [ TAINT_WARN ] =3D { 'W', ' ', false }, - [ TAINT_CRAP ] =3D { 'C', ' ', true }, - [ TAINT_FIRMWARE_WORKAROUND ] =3D { 'I', ' ', false }, - [ TAINT_OOT_MODULE ] =3D { 'O', ' ', true }, - [ TAINT_UNSIGNED_MODULE ] =3D { 'E', ' ', true }, - [ TAINT_SOFTLOCKUP ] =3D { 'L', ' ', false }, - [ TAINT_LIVEPATCH ] =3D { 'K', ' ', true }, - [ TAINT_AUX ] =3D { 'X', ' ', true }, - [ TAINT_RANDSTRUCT ] =3D { 'T', ' ', true }, - [ TAINT_TEST ] =3D { 'N', ' ', true }, + TAINT_FLAG(PROPRIETARY_MODULE, 'P', 'G', true), + TAINT_FLAG(FORCED_MODULE, 'F', ' ', true), + TAINT_FLAG(CPU_OUT_OF_SPEC, 'S', ' ', false), + TAINT_FLAG(FORCED_RMMOD, 'R', ' ', false), + TAINT_FLAG(MACHINE_CHECK, 'M', ' ', false), + TAINT_FLAG(BAD_PAGE, 'B', ' ', false), + TAINT_FLAG(USER, 'U', ' ', false), + TAINT_FLAG(DIE, 'D', ' ', false), + TAINT_FLAG(OVERRIDDEN_ACPI_TABLE, 'A', ' ', false), + TAINT_FLAG(WARN, 'W', ' ', false), + TAINT_FLAG(CRAP, 'C', ' ', true), + TAINT_FLAG(FIRMWARE_WORKAROUND, 'I', ' ', false), + TAINT_FLAG(OOT_MODULE, 'O', ' ', true), + TAINT_FLAG(UNSIGNED_MODULE, 'E', ' ', true), + TAINT_FLAG(SOFTLOCKUP, 'L', ' ', false), + TAINT_FLAG(LIVEPATCH, 'K', ' ', true), + TAINT_FLAG(AUX, 'X', ' ', true), + TAINT_FLAG(RANDSTRUCT, 'T', ' ', true), + TAINT_FLAG(TEST, 'N', ' ', true), }; =20 +#undef TAINT_FLAG + static void print_tainted_seq(struct seq_buf *s) { int i; --=20 2.39.2 From nobody Sat Feb 7 11:31:54 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) (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 E4313156F20 for ; Fri, 31 May 2024 09:05:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.7 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717146326; cv=none; b=oP/lVUWPckRph7uk/Oho0T+7skTgl9OvZDD6t59HdUuqkcYfhoJj6ZIHnoBOnqLOdrLhxeK1HdD+2LYKhbcNBHCi82nHQqEYdUoJbY0VTUN3ZJ2/ukB/F8fAFBuFVnMF7TJXkFLFWOxCrYa2lY5BqEH2x50UKwflsrwI/fB99tE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717146326; c=relaxed/simple; bh=T30Nd2PdPbzDqMDHg57Y0dcrPInQXZHw0rwiqt2FO94=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sD34uo2DnuEG8sDe0IG6yU1c7dZMQIp5f6ksXg3bifiQfyfkkuGpKcwmiAyBWMTrrBc8JrCM7IMOdmRuf6tTdg23Rgj2f45bqPaXZ4U85rXy2F7r0hZFxdEh3rbz8oF0+PXah+UyyWGpQxhr8C9HqnTHmlMprFIFgZPUd7UDU2Q= 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=E+0lQjkh; arc=none smtp.client-ip=192.198.163.7 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="E+0lQjkh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1717146325; x=1748682325; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=T30Nd2PdPbzDqMDHg57Y0dcrPInQXZHw0rwiqt2FO94=; b=E+0lQjkhmUfaiIaHuXy5A+9ZBAn74baZxdAm0Y/dH8s+xK97Vj5GdTJQ 2qEbvNgaINHlDarKv71P4m6mdEDuQAiZWa1KAElDvH9s5qvWo5U+lXAuw eH5QqRFyFrDH0ieZaMjs9Y++Ac75oD7zKf1q+2pV2mkFJudJrcUUEbYPs +llfWlo9M0+DbymIrjMYRkZHOpY1MNH4RRGvePGz8qlApRD9U1F1GuJF+ wGk6jG4sjOtZvLN+V+2m3VZvq2dD5RI55V8EJZtvYEJKdYMV16ASpQgAR PlOJKk+/aWmEFMFEdr4Q/a5ew6ac1rItcGVrmXBT5/YQqm6GJwF30SvqN w==; X-CSE-ConnectionGUID: Pobw1BBtRuS3GEPxv1r1aQ== X-CSE-MsgGUID: 7S4CBYy4SRaxsdFmSgDjXg== X-IronPort-AV: E=McAfee;i="6600,9927,11088"; a="39074088" X-IronPort-AV: E=Sophos;i="6.08,203,1712646000"; d="scan'208";a="39074088" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2024 02:05:24 -0700 X-CSE-ConnectionGUID: OryVlFjhQYuJzdh1bD8L9Q== X-CSE-MsgGUID: JtkIRRQETMON7xeoJg0Vuw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,203,1712646000"; d="scan'208";a="40543256" Received: from bergbenj-mobl1.ger.corp.intel.com (HELO localhost) ([10.245.246.190]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2024 02:05:23 -0700 From: Jani Nikula To: linux-kernel@vger.kernel.org Cc: jani.nikula@intel.com, Andrew Morton , Greg KH Subject: [PATCH 4/4] kernel/panic: add verbose logging of kernel taints in backtraces Date: Fri, 31 May 2024 12:04:57 +0300 Message-Id: <7321e306166cb2ca2807ab8639e665baa2462e9c.1717146197.git.jani.nikula@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" With nearly 20 taint flags and respective characters, it's getting a bit difficult to remember what each taint flag character means. Add verbose logging of the set taints in the format: Tainted: [P]=3DPROPRIETARY_MODULE, [W]=3DWARN in dump_stack_print_info() when there are taints. Note that the "negative flag" G is not included. Cc: Andrew Morton Cc: Greg KH Signed-off-by: Jani Nikula Reviewed-by: Greg Kroah-Hartman --- include/linux/panic.h | 8 +++++--- kernel/panic.c | 45 ++++++++++++++++++++++++++++++++----------- lib/dump_stack.c | 3 +++ 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/include/linux/panic.h b/include/linux/panic.h index 6717b15e798c..3130e0b5116b 100644 --- a/include/linux/panic.h +++ b/include/linux/panic.h @@ -77,9 +77,10 @@ static inline void set_arch_panic_timeout(int timeout, i= nt arch_default_timeout) #define TAINT_FLAGS_MAX ((1UL << TAINT_FLAGS_COUNT) - 1) =20 struct taint_flag { - char c_true; /* character printed when tainted */ - char c_false; /* character printed when not tainted */ - bool module; /* also show as a per-module taint flag */ + char c_true; /* character printed when tainted */ + char c_false; /* character printed when not tainted */ + bool module; /* also show as a per-module taint flag */ + const char *desc; /* verbose description of the set taint flag */ }; =20 extern const struct taint_flag taint_flags[TAINT_FLAGS_COUNT]; @@ -90,6 +91,7 @@ enum lockdep_ok { }; =20 extern const char *print_tainted(void); +extern const char *print_tainted_verbose(void); extern void add_taint(unsigned flag, enum lockdep_ok); extern int test_taint(unsigned flag); extern unsigned long get_taint(void); diff --git a/kernel/panic.c b/kernel/panic.c index 8f7bb94ad7d8..a914f2fcf9ad 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -476,6 +476,7 @@ EXPORT_SYMBOL(panic); [ TAINT_##taint ] =3D { \ .c_true =3D _c_true, .c_false =3D _c_false, \ .module =3D _module, \ + .desc =3D #taint, \ } =20 /* @@ -506,8 +507,9 @@ const struct taint_flag taint_flags[TAINT_FLAGS_COUNT] = =3D { =20 #undef TAINT_FLAG =20 -static void print_tainted_seq(struct seq_buf *s) +static void print_tainted_seq(struct seq_buf *s, bool verbose) { + const char *sep =3D ""; int i; =20 if (!tainted_mask) { @@ -521,10 +523,32 @@ static void print_tainted_seq(struct seq_buf *s) bool is_set =3D test_bit(i, &tainted_mask); char c =3D is_set ? t->c_true : t->c_false; =20 - seq_buf_putc(s, c); + if (verbose) { + if (is_set) { + seq_buf_printf(s, "%s[%c]=3D%s", sep, c, t->desc); + sep =3D ", "; + } + } else { + seq_buf_putc(s, c); + } } } =20 +static const char *_print_tainted(bool verbose) +{ + /* FIXME: what should the size be? */ + static char buf[sizeof(taint_flags)]; + struct seq_buf s; + + BUILD_BUG_ON(ARRAY_SIZE(taint_flags) !=3D TAINT_FLAGS_COUNT); + + seq_buf_init(&s, buf, sizeof(buf)); + + print_tainted_seq(&s, verbose); + + return seq_buf_str(&s); +} + /** * print_tainted - return a string to represent the kernel taint state. * @@ -535,16 +559,15 @@ static void print_tainted_seq(struct seq_buf *s) */ const char *print_tainted(void) { - static char buf[TAINT_FLAGS_COUNT + sizeof("Tainted: ")]; - struct seq_buf s; - - BUILD_BUG_ON(ARRAY_SIZE(taint_flags) !=3D TAINT_FLAGS_COUNT); - - seq_buf_init(&s, buf, sizeof(buf)); - - print_tainted_seq(&s); + return _print_tainted(false); +} =20 - return seq_buf_str(&s); +/** + * print_tainted_verbose - A more verbose version of print_tainted() + */ +const char *print_tainted_verbose(void) +{ + return _print_tainted(true); } =20 int test_taint(unsigned flag) diff --git a/lib/dump_stack.c b/lib/dump_stack.c index 222c6d6c8281..8b6b70eaf949 100644 --- a/lib/dump_stack.c +++ b/lib/dump_stack.c @@ -62,6 +62,9 @@ void dump_stack_print_info(const char *log_lvl) (int)strcspn(init_utsname()->version, " "), init_utsname()->version, BUILD_ID_VAL); =20 + if (get_taint()) + printk("%s%s\n", log_lvl, print_tainted_verbose()); + if (dump_stack_arch_desc_str[0] !=3D '\0') printk("%sHardware name: %s\n", log_lvl, dump_stack_arch_desc_str); --=20 2.39.2