From nobody Sun Feb 8 18:28:22 2026 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8367A34B1AF for ; Mon, 12 Jan 2026 09:41:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768210880; cv=none; b=SKvenKP8zNeJLZ8JvIuEuSSTKAEE5YODeRjRfA+dTFziNlERGqUvb3LgE3mex03XceBghWDOFyXFJqb44QNOloHX6KZ7xe5CjopdoPSto8NQOavrra+MVHaBEFlHAhlQnLF1ylfvGwQMjI+ZugCkEvy2riuGRqXOpRPKETkkN6Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768210880; c=relaxed/simple; bh=4PDwzlCI+jgQG2jAxOz1RlldCa/d+sKTSpqV/8xAtWQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a2sFadR6NcB+mEeppLVy0o7Gdt/quZvUl8iGXKoUyIDzJ9BFv34v3sfxmBiL1bRnBIQjdGEZvWqa8emV4JnQ7Cp6pSVnnkCE7LcbYpq8pQrKWXmaPpiZY+47uBCIZRbWqYavdAguFkuVd2cZRW1T0C24d1fX4fi8gvkwulDX/lg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CP1W1YRB; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CP1W1YRB" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-64b8b5410a1so9059811a12.2 for ; Mon, 12 Jan 2026 01:41:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768210871; x=1768815671; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=JUk5UFagcf4IlgTEQ/iWJeI/RTRWAeLpBdR/nh29wa0=; b=CP1W1YRBqH28++jUkgZTj8LAkP/GZMUv9QQ0U11NTSCox8u1JhWxFo4w5mNlsD3Bbn ef1NAZ1ZMDEfPr1thjg/8lkqcklFsI6Rrrsa7YySNtLv3xkIs4TPaapPg7FgoTXV0i2b JFQeerSzvitrCC2GIgDzVLmSblTXkr7rQ66iWbyezsAmGlexfPn4QoTZNZNu1byp1Xw+ ytblnP3PS+BLIL5MxuNniJg96VJEiAr/Q9BL3hcVGaw2gEfMhfhpNjakJ0UY3vrvyLoE 6UFqm0iSTwnCqDFjtolT4g1P+Y5U4NrqyUss7WGjE+AH1u175g4mOZWF+O+dqey5kApw UB4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768210871; x=1768815671; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=JUk5UFagcf4IlgTEQ/iWJeI/RTRWAeLpBdR/nh29wa0=; b=jpJPZxSF3Cjh8B1n9LbFZJj1f/L9uNYEVtXSxQlmWw9jf+GRvJqmjtOgrJLOB3WAZR 80WzIqFzbi9rmh7GdFDi2Dh//Y92YsYhBSqkPRd+KIdD7kQa34P7irePXraBLMWeylK8 5Tx1Ckei0UNDntuPxvzuRpF1x6RpRBWi0j3WQkKYuCsnroYRyTurSB/UR3rj31XHv40H lBTz/PXcHWThiDKvPxopbUGSMs6L/WQpi/xa9SOZrYUrlF8VBp7P/zQtaHYDW1HhBBDg 5mAmjsBEUnvIopJOjzRetNETpZzlC3mVgEfNuPfnxk7bVKgnN+b+HXx8jyNxYsQdr3tF Y2/w== X-Forwarded-Encrypted: i=1; AJvYcCVw4hdvx9FZ7HA1QrAFsWmuPK3bVVdcWDAGzUZEyULp0G+gfBBLWrlWhN0s39QQXMLQmXy2gTyUUaHbfuU=@vger.kernel.org X-Gm-Message-State: AOJu0YzHN05W6GD52KDGoFCAdP1XdprFGJxyD+5yQ5e51qy9iGZTb35s ZVXOojWXr8hk9SwAOIMmcye8m4qWEGt8Si8zr4BR4DeAcPIpPww2o4G0 X-Gm-Gg: AY/fxX4Aqc4B/vP7w8mkXrWOIO3Zb0pcpwtGftzUXMorz+cme2zK40EXLOhOMfMBx7v IFITSRaw9eI+yniuhEUFexECM81d9C16kSqif/b/Db1v8YY50/9nyjtZu/8AUJ7UbFZgHl2tNmR Uww/Ua8tx0aSwBXAGpVPyKgGx6+NAXtYCmwc83hU/lrJ3v1Q6263K9PoWc2jriqeIpmUsR8LO9+ xl9BTzEA2v4jEwWop1hfrihDFFyvPFrrCyBES6ofFRSlAUlvns3rLrrxjzZZaHGj2HK+ntfKRc9 s9HaYJBi4jml+0rGgSb1Yoi/TalIjJGaehezQ9MICh4TtAmHVafSZGf8aDBLCrHGHdPa0VmJA3h wHcZffoTQqoYtxIHkUJSIcftX0OyWPRh8SopPqdk4FWz8J+9O+lDhshiXpMDhIugpXcyNglpBsS AaMWlzQFDrIeLqXg== X-Google-Smtp-Source: AGHT+IGfu0MEaKm02og4PRIdkU25LNt7R3xUh98/HDOVupGAYQsgmsCOt8w9NasdgiB0ElxW68uXrg== X-Received: by 2002:a17:907:728f:b0:b87:2410:594d with SMTP id a640c23a62f3a-b8724105abfmr146423566b.49.1768210871030; Mon, 12 Jan 2026 01:41:11 -0800 (PST) Received: from [192.168.1.243] ([143.58.192.3]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b870bcd342bsm410828766b.56.2026.01.12.01.41.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 01:41:10 -0800 (PST) From: Andre Carvalho Date: Mon, 12 Jan 2026 09:40:56 +0000 Subject: [PATCH net-next v10 5/7] netconsole: introduce helpers for dynamic_netconsole_mutex lock/unlock Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260112-netcons-retrigger-v10-5-d82ebfc2503e@gmail.com> References: <20260112-netcons-retrigger-v10-0-d82ebfc2503e@gmail.com> In-Reply-To: <20260112-netcons-retrigger-v10-0-d82ebfc2503e@gmail.com> To: Breno Leitao , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Shuah Khan , Simon Horman Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Andre Carvalho X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768210863; l=12692; i=asantostc@gmail.com; s=20250807; h=from:subject:message-id; bh=4PDwzlCI+jgQG2jAxOz1RlldCa/d+sKTSpqV/8xAtWQ=; b=+aIjU9q1palonE6THhW2JxSM5iks+VY4Hy6k9bvifYU19Y8u2cvrbdd/JHqCM78jR0shHr5eF if39/p0L9EPCBkPld4+rruohaANKPVlHcGPZ7FtdhVmp6BX/A3XxKBD X-Developer-Key: i=asantostc@gmail.com; a=ed25519; pk=eWre+RwFHCxkiaQrZLsjC67mZ/pZnzSM/f7/+yFXY4Q= This commit introduces two helper functions to perform lock/unlock on dynamic_netconsole_mutex providing no-op stub versions when compiled without CONFIG_NETCONSOLE_DYNAMIC and refactors existing call sites to use the new helpers. This is done following kernel coding style guidelines, in preparation for an upcoming change. It avoids the need for preprocessor conditionals in the call site and keeps the logic easier to follow. Signed-off-by: Andre Carvalho --- drivers/net/netconsole.c | 97 +++++++++++++++++++++++++++++---------------= ---- 1 file changed, 58 insertions(+), 39 deletions(-) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 02a3463e8d24..46d990f3d904 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -213,6 +213,16 @@ static void netconsole_target_put(struct netconsole_ta= rget *nt) config_group_put(&nt->group); } =20 +static void dynamic_netconsole_mutex_lock(void) +{ + mutex_lock(&dynamic_netconsole_mutex); +} + +static void dynamic_netconsole_mutex_unlock(void) +{ + mutex_unlock(&dynamic_netconsole_mutex); +} + #else /* !CONFIG_NETCONSOLE_DYNAMIC */ =20 static int __init dynamic_netconsole_init(void) @@ -240,6 +250,15 @@ static void populate_configfs_item(struct netconsole_t= arget *nt, int cmdline_count) { } + +static void dynamic_netconsole_mutex_lock(void) +{ +} + +static void dynamic_netconsole_mutex_unlock(void) +{ +} + #endif /* CONFIG_NETCONSOLE_DYNAMIC */ =20 /* Check if the target was bound by mac address. */ @@ -495,9 +514,9 @@ static ssize_t sysdata_cpu_nr_enabled_show(struct confi= g_item *item, char *buf) struct netconsole_target *nt =3D to_target(item->ci_parent); bool cpu_nr_enabled; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); cpu_nr_enabled =3D !!(nt->sysdata_fields & SYSDATA_CPU_NR); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); =20 return sysfs_emit(buf, "%d\n", cpu_nr_enabled); } @@ -509,9 +528,9 @@ static ssize_t sysdata_taskname_enabled_show(struct con= fig_item *item, struct netconsole_target *nt =3D to_target(item->ci_parent); bool taskname_enabled; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); taskname_enabled =3D !!(nt->sysdata_fields & SYSDATA_TASKNAME); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); =20 return sysfs_emit(buf, "%d\n", taskname_enabled); } @@ -522,9 +541,9 @@ static ssize_t sysdata_release_enabled_show(struct conf= ig_item *item, struct netconsole_target *nt =3D to_target(item->ci_parent); bool release_enabled; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); release_enabled =3D !!(nt->sysdata_fields & SYSDATA_TASKNAME); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); =20 return sysfs_emit(buf, "%d\n", release_enabled); } @@ -562,9 +581,9 @@ static ssize_t sysdata_msgid_enabled_show(struct config= _item *item, struct netconsole_target *nt =3D to_target(item->ci_parent); bool msgid_enabled; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); msgid_enabled =3D !!(nt->sysdata_fields & SYSDATA_MSGID); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); =20 return sysfs_emit(buf, "%d\n", msgid_enabled); } @@ -584,7 +603,7 @@ static ssize_t enabled_store(struct config_item *item, unsigned long flags; ssize_t ret; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); ret =3D kstrtobool(buf, &enabled); if (ret) goto out_unlock; @@ -660,7 +679,7 @@ static ssize_t enabled_store(struct config_item *item, /* Deferred cleanup */ netconsole_process_cleanups(); out_unlock: - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return ret; } =20 @@ -671,7 +690,7 @@ static ssize_t release_store(struct config_item *item, = const char *buf, bool release; ssize_t ret; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); if (nt->state =3D=3D STATE_ENABLED) { pr_err("target (%s) is enabled, disable to update parameters\n", config_item_name(&nt->group.cg_item)); @@ -687,7 +706,7 @@ static ssize_t release_store(struct config_item *item, = const char *buf, =20 ret =3D strnlen(buf, count); out_unlock: - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return ret; } =20 @@ -698,7 +717,7 @@ static ssize_t extended_store(struct config_item *item,= const char *buf, bool extended; ssize_t ret; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); if (nt->state =3D=3D STATE_ENABLED) { pr_err("target (%s) is enabled, disable to update parameters\n", config_item_name(&nt->group.cg_item)); @@ -713,7 +732,7 @@ static ssize_t extended_store(struct config_item *item,= const char *buf, nt->extended =3D extended; ret =3D strnlen(buf, count); out_unlock: - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return ret; } =20 @@ -722,18 +741,18 @@ static ssize_t dev_name_store(struct config_item *ite= m, const char *buf, { struct netconsole_target *nt =3D to_target(item); =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); if (nt->state =3D=3D STATE_ENABLED) { pr_err("target (%s) is enabled, disable to update parameters\n", config_item_name(&nt->group.cg_item)); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return -EINVAL; } =20 strscpy(nt->np.dev_name, buf, IFNAMSIZ); trim_newline(nt->np.dev_name, IFNAMSIZ); =20 - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return strnlen(buf, count); } =20 @@ -743,7 +762,7 @@ static ssize_t local_port_store(struct config_item *ite= m, const char *buf, struct netconsole_target *nt =3D to_target(item); ssize_t ret =3D -EINVAL; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); if (nt->state =3D=3D STATE_ENABLED) { pr_err("target (%s) is enabled, disable to update parameters\n", config_item_name(&nt->group.cg_item)); @@ -755,7 +774,7 @@ static ssize_t local_port_store(struct config_item *ite= m, const char *buf, goto out_unlock; ret =3D strnlen(buf, count); out_unlock: - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return ret; } =20 @@ -765,7 +784,7 @@ static ssize_t remote_port_store(struct config_item *it= em, struct netconsole_target *nt =3D to_target(item); ssize_t ret =3D -EINVAL; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); if (nt->state =3D=3D STATE_ENABLED) { pr_err("target (%s) is enabled, disable to update parameters\n", config_item_name(&nt->group.cg_item)); @@ -777,7 +796,7 @@ static ssize_t remote_port_store(struct config_item *it= em, goto out_unlock; ret =3D strnlen(buf, count); out_unlock: - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return ret; } =20 @@ -788,7 +807,7 @@ static ssize_t local_ip_store(struct config_item *item,= const char *buf, ssize_t ret =3D -EINVAL; int ipv6; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); if (nt->state =3D=3D STATE_ENABLED) { pr_err("target (%s) is enabled, disable to update parameters\n", config_item_name(&nt->group.cg_item)); @@ -802,7 +821,7 @@ static ssize_t local_ip_store(struct config_item *item,= const char *buf, =20 ret =3D strnlen(buf, count); out_unlock: - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return ret; } =20 @@ -813,7 +832,7 @@ static ssize_t remote_ip_store(struct config_item *item= , const char *buf, ssize_t ret =3D -EINVAL; int ipv6; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); if (nt->state =3D=3D STATE_ENABLED) { pr_err("target (%s) is enabled, disable to update parameters\n", config_item_name(&nt->group.cg_item)); @@ -827,7 +846,7 @@ static ssize_t remote_ip_store(struct config_item *item= , const char *buf, =20 ret =3D strnlen(buf, count); out_unlock: - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return ret; } =20 @@ -848,7 +867,7 @@ static ssize_t remote_mac_store(struct config_item *ite= m, const char *buf, u8 remote_mac[ETH_ALEN]; ssize_t ret =3D -EINVAL; =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); if (nt->state =3D=3D STATE_ENABLED) { pr_err("target (%s) is enabled, disable to update parameters\n", config_item_name(&nt->group.cg_item)); @@ -863,7 +882,7 @@ static ssize_t remote_mac_store(struct config_item *ite= m, const char *buf, =20 ret =3D strnlen(buf, count); out_unlock: - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); return ret; } =20 @@ -984,7 +1003,7 @@ static ssize_t userdatum_value_store(struct config_ite= m *item, const char *buf, return -EMSGSIZE; =20 mutex_lock(&netconsole_subsys.su_mutex); - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); =20 ret =3D strscpy(udm->value, buf, sizeof(udm->value)); if (ret < 0) @@ -998,7 +1017,7 @@ static ssize_t userdatum_value_store(struct config_ite= m *item, const char *buf, goto out_unlock; ret =3D count; out_unlock: - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); mutex_unlock(&netconsole_subsys.su_mutex); return ret; } @@ -1026,7 +1045,7 @@ static ssize_t sysdata_msgid_enabled_store(struct con= fig_item *item, return ret; =20 mutex_lock(&netconsole_subsys.su_mutex); - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); curr =3D !!(nt->sysdata_fields & SYSDATA_MSGID); if (msgid_enabled =3D=3D curr) goto unlock_ok; @@ -1038,7 +1057,7 @@ static ssize_t sysdata_msgid_enabled_store(struct con= fig_item *item, =20 unlock_ok: ret =3D strnlen(buf, count); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); mutex_unlock(&netconsole_subsys.su_mutex); return ret; } @@ -1055,7 +1074,7 @@ static ssize_t sysdata_release_enabled_store(struct c= onfig_item *item, return ret; =20 mutex_lock(&netconsole_subsys.su_mutex); - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); curr =3D !!(nt->sysdata_fields & SYSDATA_RELEASE); if (release_enabled =3D=3D curr) goto unlock_ok; @@ -1067,7 +1086,7 @@ static ssize_t sysdata_release_enabled_store(struct c= onfig_item *item, =20 unlock_ok: ret =3D strnlen(buf, count); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); mutex_unlock(&netconsole_subsys.su_mutex); return ret; } @@ -1084,7 +1103,7 @@ static ssize_t sysdata_taskname_enabled_store(struct = config_item *item, return ret; =20 mutex_lock(&netconsole_subsys.su_mutex); - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); curr =3D !!(nt->sysdata_fields & SYSDATA_TASKNAME); if (taskname_enabled =3D=3D curr) goto unlock_ok; @@ -1096,7 +1115,7 @@ static ssize_t sysdata_taskname_enabled_store(struct = config_item *item, =20 unlock_ok: ret =3D strnlen(buf, count); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); mutex_unlock(&netconsole_subsys.su_mutex); return ret; } @@ -1114,7 +1133,7 @@ static ssize_t sysdata_cpu_nr_enabled_store(struct co= nfig_item *item, return ret; =20 mutex_lock(&netconsole_subsys.su_mutex); - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); curr =3D !!(nt->sysdata_fields & SYSDATA_CPU_NR); if (cpu_nr_enabled =3D=3D curr) /* no change requested */ @@ -1130,7 +1149,7 @@ static ssize_t sysdata_cpu_nr_enabled_store(struct co= nfig_item *item, =20 unlock_ok: ret =3D strnlen(buf, count); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); mutex_unlock(&netconsole_subsys.su_mutex); return ret; } @@ -1192,10 +1211,10 @@ static void userdatum_drop(struct config_group *gro= up, struct config_item *item) ud =3D to_userdata(&group->cg_item); nt =3D userdata_to_target(ud); =20 - mutex_lock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_lock(); update_userdata(nt); config_item_put(item); - mutex_unlock(&dynamic_netconsole_mutex); + dynamic_netconsole_mutex_unlock(); } =20 static struct configfs_attribute *userdata_attrs[] =3D { --=20 2.52.0