From patchwork Fri Jan 26 23:13:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wood X-Patchwork-Id: 192846 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2395:b0:106:343:edcb with SMTP id gw21csp204790dyb; Fri, 26 Jan 2024 15:14:36 -0800 (PST) X-Google-Smtp-Source: AGHT+IGvpSwlOO57l9biD6Xcl/wbxpO/uqEhFF9CGrZ0hTTf//lXR0JqMrOa7MUhX/L7jZI/6lCt X-Received: by 2002:a05:690c:3506:b0:5ff:77b4:60b7 with SMTP id fq6-20020a05690c350600b005ff77b460b7mr1027152ywb.25.1706310875988; Fri, 26 Jan 2024 15:14:35 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706310875; cv=pass; d=google.com; s=arc-20160816; b=CGT60HoMwOpZHwuKKwMlbTkWuKaFsL7gF5dpy6/ZqRLS+vV74MgN3Wbfv7bgMf/HuR MXwu5HcZKi7hyFLAcVjzKsJS6t+W63dq5bIpLAlTxe6V5Skm/2Rsn8NdB2GqWDG+7/Kz znD6SBOYvBjf5+ti2eBuakKhqqMD0Od/SEsfsjUep4kRvCgUkZydkD6cTACe8o+HQwwV mQD3wR67LKCbzrJmejIzFQi5X3zqbwHK9jtEo5de6HvCx4KFSxD+XqSLVqHBnHNj0GmO PMcnRaX9gBDpKZyxKtcQE+MSwDJYdKi/nkP1SFFIiPfVUlqp0nRomPUEcdvJ2f4H0MiR THcw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=5a7ZVpYjt4glIMRdLh4WlPExoPNat5beHZOUQY5BsC8=; fh=+EB6oBnXtBrxaPMIm1rb1kOyvjkddCLSgL4/UeSWQvM=; b=i65kcIdWCkoB/8uCQV1IKpc9EDVTmA/9Z4eyW6L79dz4uea6Yy1RMH7FMpRZyieq2t nZXqQUMHiBuRYa7Ef5iCrjgFGoeYh86YPktJDw7APNOhSt5d7bLm+Hz9WuMGbHCpWfFB 1Hq66f4PKssO/0lWyK/tSNqYy6Ue3TAzqtY1DXCZR1PWVv5Nmq6VyoXtujF92FfSeA9N STrfq6VfI3i203+1ZFhnrbbeSOTbxkxar5ZHfQ/NSIccDG/jB+cUAKptPPMgYjdClF6r DhEzdzMjY2W3nA3k7e0yuvFxqLJWtQwAxt/9D791wVq4HdNuzYPUmnk/8UhBEIkTSEUp K1ZQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=UqPlynPs; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40808-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40808-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id p14-20020ad45f4e000000b00681da55cc3fsi2336029qvg.249.2024.01.26.15.14.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:14:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-40808-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=UqPlynPs; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40808-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40808-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id AECB91C21D75 for ; Fri, 26 Jan 2024 23:14:35 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3405659175; Fri, 26 Jan 2024 23:13:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UqPlynPs" Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (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 EB04F57331; Fri, 26 Jan 2024 23:13:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310835; cv=none; b=LX+00XuisPmlq50wAcauOfoSye3EbaRuWdwo8l9uC2/JnCIB5De5BUHPKx/AjSzTNGedy4ph3nDWYLfxhfrHJLANdAr20FT1utyAljO/oEj1PJAzwHKl7PZe+fWXl5lfN3q5HfbMgSKL9sCpiw3WXZ4K2Txr7tTWGGlT4dHYyD4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310835; c=relaxed/simple; bh=s3tKx9YDYT51+QXp1CdeWhCE59bgmZCtnv1eFlCrWyA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L5r9cL9N4i50UR+L2Ilg9J6yeWZ93NZflHqOUw74VkbgH5ykWr3/ekQ1XQEUx8pi2nQcVpN7vdpxM0gurYR5/3cLRskohDHcWziCUaOFWq4HjrNlixyrkDDmf0oUdSW1ARjSDASE1cbXDWavpOtuzFlC41jajMd/Mrt9zVgV/P0= 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=UqPlynPs; arc=none smtp.client-ip=209.85.214.172 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 Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-1d70a986c4aso5642135ad.2; Fri, 26 Jan 2024 15:13:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706310833; x=1706915633; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5a7ZVpYjt4glIMRdLh4WlPExoPNat5beHZOUQY5BsC8=; b=UqPlynPsztqLdGXnaltynKfnV501dth5XU+umP7NH6EvticoVwN+8l3A9oWXGzOhLv wP0GY3tr9DEvogmcO5o2cpzUuMzIGbSmmNa6jSr0f+r74gy2azTL4Z5DJKINFN5v9Y5h 5WyEKBqSez61m4w1Zk9CQcQzMHP797Eq3IBxPHzAyLb1PRK04VrUke9MosItdLEOPSR5 vAoKFzG/Xti/NPdDnspv/NkEBR6oLC4FpmxNybEFznJI01V0Nmz2B83vbqLQsctDqZue 07CWx4iaUGLDBw/R8qeVDL1atO62spvx+F0igmrWbUidD+HnWuvMb8x35LzwkNPoM4f2 fPQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706310833; x=1706915633; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5a7ZVpYjt4glIMRdLh4WlPExoPNat5beHZOUQY5BsC8=; b=okHBXUfbGAVy4e/8xAzHSwEqI90mr845vBYaNfF/+RS6v9Ptk+2JclKStXglXeEXUg 4/GRRrPPbzLicGSMRz/Fu32v77txkw2FPsNTeu5KilAGxodQvV4gTDL/myB/VkvULis8 eux2ODz1k9fyyXqXMq/xguGPrIc+pku3Xw6iqDwKF+O2QuoAJYqtZXRSKEHxhXIuVl8N KhH9LdS6OBRLvZhwfI4C2WjF4XvBTDWCXLdtkV4vWLQ9Del/gvEltqYRtColb2xSFQ8j DFIgLZikBj3BFsLHqnhr3BarEt4Oh1uNqPU0jLcm5t2tGGkL5kB8yU+okiPADlUUng+l /c2g== X-Gm-Message-State: AOJu0Yxjarb/NMfSOl79xgN6i1LVt+rUaMG5Tn6DCQ7yMtsMql7UlKmS p8mClzmtwGZwibDzW2gyU1R/NjP9L7NrKxU0olcMzLKCC/tqCrMZ X-Received: by 2002:a17:902:7402:b0:1d7:52b6:d178 with SMTP id g2-20020a170902740200b001d752b6d178mr701957pll.42.1706310833146; Fri, 26 Jan 2024 15:13:53 -0800 (PST) Received: from localhost ([2601:644:9380:8cd0::7fb4]) by smtp.gmail.com with ESMTPSA id jy15-20020a17090342cf00b001d71eac34a6sm1426298plb.294.2024.01.26.15.13.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:13:52 -0800 (PST) From: Matthew Wood To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: leitao@debian.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 1/8] net: netconsole: cleanup formatting lints Date: Fri, 26 Jan 2024 15:13:36 -0800 Message-ID: <20240126231348.281600-2-thepacketgeek@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240126231348.281600-1-thepacketgeek@gmail.com> References: <20240126231348.281600-1-thepacketgeek@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789196633061249942 X-GMAIL-MSGID: 1789196633061249942 Address checkpatch lint suggestions in preparation for later changes Signed-off-by: Matthew Wood --- drivers/net/netconsole.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 6e14ba5e06c8..93fc3b509706 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -49,7 +49,7 @@ static char config[MAX_PARAM_LENGTH]; module_param_string(netconsole, config, MAX_PARAM_LENGTH, 0); MODULE_PARM_DESC(netconsole, " netconsole=[src-port]@[src-ip]/[dev],[tgt-port]@/[tgt-macaddr]"); -static bool oops_only = false; +static bool oops_only; module_param(oops_only, bool, 0600); MODULE_PARM_DESC(oops_only, "Only log oops messages"); @@ -501,6 +501,7 @@ static ssize_t local_ip_store(struct config_item *item, const char *buf, if (strnchr(buf, count, ':')) { const char *end; + if (in6_pton(buf, count, nt->np.local_ip.in6.s6_addr, -1, &end) > 0) { if (*end && *end != '\n') { pr_err("invalid IPv6 address at: <%c>\n", *end); @@ -510,9 +511,9 @@ static ssize_t local_ip_store(struct config_item *item, const char *buf, } else goto out_unlock; } else { - if (!nt->np.ipv6) { + if (!nt->np.ipv6) nt->np.local_ip.ip = in_aton(buf); - } else + else goto out_unlock; } @@ -537,6 +538,7 @@ static ssize_t remote_ip_store(struct config_item *item, const char *buf, if (strnchr(buf, count, ':')) { const char *end; + if (in6_pton(buf, count, nt->np.remote_ip.in6.s6_addr, -1, &end) > 0) { if (*end && *end != '\n') { pr_err("invalid IPv6 address at: <%c>\n", *end); @@ -546,9 +548,9 @@ static ssize_t remote_ip_store(struct config_item *item, const char *buf, } else goto out_unlock; } else { - if (!nt->np.ipv6) { + if (!nt->np.ipv6) nt->np.remote_ip.ip = in_aton(buf); - } else + else goto out_unlock; } @@ -781,6 +783,7 @@ static int netconsole_netdev_event(struct notifier_block *this, spin_unlock_irqrestore(&target_list_lock, flags); if (stopped) { const char *msg = "had an event"; + switch (event) { case NETDEV_UNREGISTER: msg = "unregistered"; From patchwork Fri Jan 26 23:13:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wood X-Patchwork-Id: 192847 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2395:b0:106:343:edcb with SMTP id gw21csp205129dyb; Fri, 26 Jan 2024 15:15:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IFVfnp2KV5mA5BzJuB4evt7YqU4bbEobrVHq3Nonx8dHTe3/FMrJMvhXlepAiiviwz5tdlw X-Received: by 2002:a05:6808:640e:b0:3bd:72e8:7741 with SMTP id fg14-20020a056808640e00b003bd72e87741mr504643oib.88.1706310922221; Fri, 26 Jan 2024 15:15:22 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706310922; cv=pass; d=google.com; s=arc-20160816; b=IP7RWW6E4BAgiS4ubimdL5O16lMLulhMn0b/zF9uWij7zOj4QFp3g8DGjokmM9PA4l H7XOlRHBZNov0rvtpmOfjI1DyfU8WPPHgjTd2uUYF/vHysSG8XPN5aZbArqkOOKPntqi JMkKQvVCcu4aox0JR/pEivDLURRgwYeeYNJ5vcY9BrMEoaE+pUQaOjZJ4dSWP4yDwbpO 6xNgK5NbkZF0kM4xGkNr6hnxoZjSDnMAcgNeVsHZfNixPefslSpnjzVuXzTdRHdCNOSF OzROpyVNV8KbfFuNKMCYxFWSrwiYgyR8uWQrsX+wFs07qj7PbFE+MW5Vy6k5JpM36f/s QygA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=rnkGomYm3D+fpLxdujWN99uxXSHNQWvM4sS9axkvWjE=; fh=+EB6oBnXtBrxaPMIm1rb1kOyvjkddCLSgL4/UeSWQvM=; b=sCPza3bO/6SPePviNQz5wLCX7MEdyPLnxlIiLixXSwfeteYss/ZgAuav4ukMgoNW1c zHxvX9n9UgWGKyoLSCkl6yjIxC4eG29QaHpZdQSRziSer688457feufFTP/vdmfqqOeG V9EKBh5Ywusm5gI86BL2S+NMYyW6wf2btXxCXnby8JymwcjmFhnei1LkLIBtlruwIJNw ZnXcLQatr+u7p8tvW93ZMHSGfNDo7hKaFIVIejpMaXqokTKXrLSslkn/7fg0SprFum05 Q5MwuvZMKVlbux3cQTNHxxsqjrl1URkuw2nF9uBt3drywdE8opxX5t7OA8P34z6i0qi+ i+Iw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=RDCaLsaj; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40809-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40809-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id n21-20020a05622a11d500b0042a43622ca8si2314252qtk.75.2024.01.26.15.15.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:15:22 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-40809-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=RDCaLsaj; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40809-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40809-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id C2C061C220EE for ; Fri, 26 Jan 2024 23:15:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 30A7A5A7B9; Fri, 26 Jan 2024 23:14:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RDCaLsaj" Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) (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 AEB0358ABE; Fri, 26 Jan 2024 23:13:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310838; cv=none; b=Cn/LzlgjRFmV2IXJSz3Ts8EGGjpRZX/3AN6nXFNMBY+ZpkazDERa8JEFk9IMWabNmVQrlOgZrATtCoOcy6yiizot3Lmkz41qh5pyO4rFtQ1oMrOlCFCqwncB14JCAf/AZtJV5rN/skKNYDcjP+S/zC7aj17Pg+4XlI+42NGFBtc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310838; c=relaxed/simple; bh=HMzX7rgJBLGzBn8O3HLnD9vak9OSsdwseRcSZQv13NM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZLP3dbus85rACkkQq+kfgD0xmv0akpWbp6L24GiBf2AJtasaeOXU6dDZNMM6RRKdIQWTtVHlGRQYyY4chkcNzuYxincZHyve0iUJFpzrsG8X/K0QT4El9mbRPRhmggMdpExtiNOLL29ZeZCZHFHwu2be1DoKtZLBW3uhiJCyLJc= 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=RDCaLsaj; arc=none smtp.client-ip=209.85.215.177 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 Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-5d3912c9a83so630895a12.3; Fri, 26 Jan 2024 15:13:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706310836; x=1706915636; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rnkGomYm3D+fpLxdujWN99uxXSHNQWvM4sS9axkvWjE=; b=RDCaLsajsW9vCLrFJ8RgXaWvYl0LCx7R6pzNOPuaQAj0E5h4L/vrcPId6/yoEviw4m gs5nRuV11JzYXDJHM44LL5abRXn6BMxMOSSVW3XxsbEtaXE2zQytgWMT1vE6C+v+wBIL cFlyRdQHePpBbXlhxU66NXvYUNzxYeqJSPdrwkZPxXti1ACnIYdk/sVK5voa2dgg0ap0 1yLe2dFlPPyEYHgp+sIEH7I558txuJYZQA4myzEY3vZNXPqajRENVbDbOnDvTtfWCsnJ HnEfMw4bdS7BwNTzO5s5XgIRale3/UFQebnk01717i2o1chfLpnB6MNYj6u2jTASs/gQ jxfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706310836; x=1706915636; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rnkGomYm3D+fpLxdujWN99uxXSHNQWvM4sS9axkvWjE=; b=bcppaEA22PYMp/AdNjtFLRMgtghMya8OPh4o4Qz0P01E2MTmY6oSwhQvZLL4p6Tge6 xB+N3BW74zRCPazrjLi5NbeF4bAw8AA4bR2QphK+ZAyKmLDPlUPxCec/0YmxBFOazwZ7 ES+2OIDqejy2UJ1L2BPu8BCl6xWYlU65/ueyUQ0tS3ftPiHP3U0NTJmwE0zvSkPOILAt xdqZSlKrorQPeUk6UOq0nj1kVjkGRLHC4pzza35s/Ehx3zb1l4HaflSH48c03b33GIfM YDNhum3aomB4BGprWx1dpUI09dryGPlOxlyDSbxbNuh9dJa2i7Hpuks6K3fdgz5jTMsO 7ENg== X-Gm-Message-State: AOJu0Ywu35UnWLKA4tqIKQuQddmsSJewbDxV2Q0utz3vjIATz+++G0nC 7KG8qJSHOioDB2KpqOs2MKtnenN5IQZ/A8yI2bB33vb864Lcous4 X-Received: by 2002:a05:6a20:a120:b0:19c:6dd4:9862 with SMTP id q32-20020a056a20a12000b0019c6dd49862mr649492pzk.5.1706310835938; Fri, 26 Jan 2024 15:13:55 -0800 (PST) Received: from localhost ([2601:644:9380:8cd0::7fb4]) by smtp.gmail.com with ESMTPSA id gx20-20020a056a001e1400b006dde04c10dasm1607626pfb.217.2024.01.26.15.13.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:13:55 -0800 (PST) From: Matthew Wood To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: leitao@debian.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 2/8] net: netconsole: move netconsole_target config_item to config_group Date: Fri, 26 Jan 2024 15:13:37 -0800 Message-ID: <20240126231348.281600-3-thepacketgeek@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240126231348.281600-1-thepacketgeek@gmail.com> References: <20240126231348.281600-1-thepacketgeek@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789196681530588612 X-GMAIL-MSGID: 1789196681530588612 In order to support a nested userdata config_group in later patches, use a config_group for netconsole_target instead of a config_item. It's a no-op functionality-wise, since config_group maintains all features of a config_item via the cg_item member. Signed-off-by: Matthew Wood Reviewed-by: Breno Leitao --- drivers/net/netconsole.c | 61 ++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 93fc3b509706..085350beca87 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -79,7 +79,7 @@ static struct console netconsole_ext; /** * struct netconsole_target - Represents a configured netconsole target. * @list: Links this target into the target_list. - * @item: Links us into the configfs subsystem hierarchy. + * @group: Links us into the configfs subsystem hierarchy. * @enabled: On / off knob to enable / disable target. * Visible from userspace (read-write). * We maintain a strict 1:1 correspondence between this and @@ -102,7 +102,7 @@ static struct console netconsole_ext; struct netconsole_target { struct list_head list; #ifdef CONFIG_NETCONSOLE_DYNAMIC - struct config_item item; + struct config_group group; #endif bool enabled; bool extended; @@ -134,14 +134,14 @@ static void __exit dynamic_netconsole_exit(void) */ static void netconsole_target_get(struct netconsole_target *nt) { - if (config_item_name(&nt->item)) - config_item_get(&nt->item); + if (config_item_name(&nt->group.cg_item)) + config_group_get(&nt->group); } static void netconsole_target_put(struct netconsole_target *nt) { - if (config_item_name(&nt->item)) - config_item_put(&nt->item); + if (config_item_name(&nt->group.cg_item)) + config_group_put(&nt->group); } #else /* !CONFIG_NETCONSOLE_DYNAMIC */ @@ -221,9 +221,13 @@ static struct netconsole_target *alloc_and_init(void) static struct netconsole_target *to_target(struct config_item *item) { - return item ? - container_of(item, struct netconsole_target, item) : - NULL; + struct config_group *cfg_group; + + cfg_group = to_config_group(item); + if (!cfg_group) + return NULL; + return container_of(to_config_group(item), + struct netconsole_target, group); } /* @@ -370,7 +374,7 @@ static ssize_t release_store(struct config_item *item, const char *buf, mutex_lock(&dynamic_netconsole_mutex); if (nt->enabled) { pr_err("target (%s) is enabled, disable to update parameters\n", - config_item_name(&nt->item)); + config_item_name(&nt->group.cg_item)); err = -EINVAL; goto out_unlock; } @@ -398,7 +402,7 @@ static ssize_t extended_store(struct config_item *item, const char *buf, mutex_lock(&dynamic_netconsole_mutex); if (nt->enabled) { pr_err("target (%s) is enabled, disable to update parameters\n", - config_item_name(&nt->item)); + config_item_name(&nt->group.cg_item)); err = -EINVAL; goto out_unlock; } @@ -425,7 +429,7 @@ static ssize_t dev_name_store(struct config_item *item, const char *buf, mutex_lock(&dynamic_netconsole_mutex); if (nt->enabled) { pr_err("target (%s) is enabled, disable to update parameters\n", - config_item_name(&nt->item)); + config_item_name(&nt->group.cg_item)); mutex_unlock(&dynamic_netconsole_mutex); return -EINVAL; } @@ -450,7 +454,7 @@ static ssize_t local_port_store(struct config_item *item, const char *buf, mutex_lock(&dynamic_netconsole_mutex); if (nt->enabled) { pr_err("target (%s) is enabled, disable to update parameters\n", - config_item_name(&nt->item)); + config_item_name(&nt->group.cg_item)); goto out_unlock; } @@ -473,7 +477,7 @@ static ssize_t remote_port_store(struct config_item *item, mutex_lock(&dynamic_netconsole_mutex); if (nt->enabled) { pr_err("target (%s) is enabled, disable to update parameters\n", - config_item_name(&nt->item)); + config_item_name(&nt->group.cg_item)); goto out_unlock; } @@ -495,7 +499,7 @@ static ssize_t local_ip_store(struct config_item *item, const char *buf, mutex_lock(&dynamic_netconsole_mutex); if (nt->enabled) { pr_err("target (%s) is enabled, disable to update parameters\n", - config_item_name(&nt->item)); + config_item_name(&nt->group.cg_item)); goto out_unlock; } @@ -532,7 +536,7 @@ static ssize_t remote_ip_store(struct config_item *item, const char *buf, mutex_lock(&dynamic_netconsole_mutex); if (nt->enabled) { pr_err("target (%s) is enabled, disable to update parameters\n", - config_item_name(&nt->item)); + config_item_name(&nt->group.cg_item)); goto out_unlock; } @@ -570,7 +574,7 @@ static ssize_t remote_mac_store(struct config_item *item, const char *buf, mutex_lock(&dynamic_netconsole_mutex); if (nt->enabled) { pr_err("target (%s) is enabled, disable to update parameters\n", - config_item_name(&nt->item)); + config_item_name(&nt->group.cg_item)); goto out_unlock; } @@ -638,7 +642,7 @@ static struct netconsole_target *find_cmdline_target(const char *name) spin_lock_irqsave(&target_list_lock, flags); list_for_each_entry(nt, &target_list, list) { - if (!strcmp(nt->item.ci_name, name)) { + if (!strcmp(nt->group.cg_item.ci_name, name)) { ret = nt; break; } @@ -652,8 +656,8 @@ static struct netconsole_target *find_cmdline_target(const char *name) * Group operations and type for netconsole_subsys. */ -static struct config_item *make_netconsole_target(struct config_group *group, - const char *name) +static struct config_group *make_netconsole_target(struct config_group *group, + const char *name) { struct netconsole_target *nt; unsigned long flags; @@ -665,8 +669,9 @@ static struct config_item *make_netconsole_target(struct config_group *group, if (!strncmp(name, NETCONSOLE_PARAM_TARGET_PREFIX, strlen(NETCONSOLE_PARAM_TARGET_PREFIX))) { nt = find_cmdline_target(name); - if (nt) - return &nt->item; + if (nt) { + return &nt->group; + } } nt = alloc_and_init(); @@ -674,14 +679,14 @@ static struct config_item *make_netconsole_target(struct config_group *group, return ERR_PTR(-ENOMEM); /* Initialize the config_item member */ - config_item_init_type_name(&nt->item, name, &netconsole_target_type); + config_group_init_type_name(&nt->group, name, &netconsole_target_type); /* Adding, but it is disabled */ spin_lock_irqsave(&target_list_lock, flags); list_add(&nt->list, &target_list); spin_unlock_irqrestore(&target_list_lock, flags); - return &nt->item; + return &nt->group; } static void drop_netconsole_target(struct config_group *group, @@ -701,11 +706,11 @@ static void drop_netconsole_target(struct config_group *group, if (nt->enabled) netpoll_cleanup(&nt->np); - config_item_put(&nt->item); + config_item_put(&nt->group.cg_item); } static struct configfs_group_operations netconsole_subsys_group_ops = { - .make_item = make_netconsole_target, + .make_group = make_netconsole_target, .drop_item = drop_netconsole_target, }; @@ -731,8 +736,8 @@ static void populate_configfs_item(struct netconsole_target *nt, snprintf(target_name, sizeof(target_name), "%s%d", NETCONSOLE_PARAM_TARGET_PREFIX, cmdline_count); - config_item_init_type_name(&nt->item, target_name, - &netconsole_target_type); + config_group_init_type_name(&nt->group, target_name, + &netconsole_target_type); } #endif /* CONFIG_NETCONSOLE_DYNAMIC */ From patchwork Fri Jan 26 23:13:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wood X-Patchwork-Id: 192866 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2395:b0:106:343:edcb with SMTP id gw21csp212701dyb; Fri, 26 Jan 2024 15:35:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IH1SL9dO+M+moa/kiVEFzPmIfKAnTYfR4TA7ag5/dB1hKo+DIi8uoX9Q+Sd7VO+fiafqUhf X-Received: by 2002:a62:f20b:0:b0:6db:b1f3:fb66 with SMTP id m11-20020a62f20b000000b006dbb1f3fb66mr639645pfh.8.1706312159099; Fri, 26 Jan 2024 15:35:59 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706312159; cv=pass; d=google.com; s=arc-20160816; b=ry7alvGk0Zy69uo51e+3uqsHzp9hBTkgWaKvFB0CAbPhyRUWRGXAw2C6RjJazHUhOo 1QvKcIYNbz39ZGrPcHvKR8fo+0jNJ+g4jGRR3wxoyuMlZmACRTaNUqQon8h68QQIJYrt IYgY6EoVKb572XEc/DUkCvnDfBCrV8wIq/gaFRUdyx8nZOhgDDzs2c0JEon1hGfvTOWt /jygOOr7j2z7wEyEN6RHWFrnx+d+6W3pZTIuDgIxcCm2QJa5Xaf5mX/8VV/NdgAStit9 brn5s+oGBbBcu/t99SK2XlcfiLeNPx2EI2MtLZZY/KMSRSD64X4Pdds5nUvZUpOIhnaN nYzQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=aZZIgE9h2jQLSmHO3bzM7GbmlOxYLfQCD/fuB/DQM9s=; fh=+EB6oBnXtBrxaPMIm1rb1kOyvjkddCLSgL4/UeSWQvM=; b=nghMgt1IIYGCVeoirWjKDKq9F8Tsdtikf2Ymd4pvrcJgWgbzdN1vfaIOJIdrEMvcwV o5KU6xrpUJ7mx+as4B5zv4rHxy6lPzNPUzukkgtS8/EZw5GC6u9dzFu63txO5FusM48v o8uMsUDVSuDKokqKdM++464vpmJstOSoNbQu0sudIhDoUGPF0UHItxz7X6QS3Nl+bb5k w7AIlGSNaIJaHJIn/bV8AEIFB4PHTBCHuQGsWXukTDyMXKJ2dNB0UmZX+40FsqeFt3q3 81Be2Dwo/8eytyHIn6wz6/7oKo72m+En1LWQ6m4IpDQ/u428h+PAMK8fHdHQg9aaWoEu c02g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hGyWAaVv; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40810-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40810-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id b7-20020aa78ec7000000b006de0dc5a5acsi339223pfr.129.2024.01.26.15.35.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:35:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-40810-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=hGyWAaVv; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40810-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40810-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 23020288666 for ; Fri, 26 Jan 2024 23:15:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 311F75B20E; Fri, 26 Jan 2024 23:14:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hGyWAaVv" Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (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 28E6E5A0FD; Fri, 26 Jan 2024 23:13:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310840; cv=none; b=EEd/Rsvf2G62HOdeKWSp8oYbmQuB3uOr8OgXu41n/ua3xD/qRlvffUrQztwNpS6GDMFUUvtd9mQgsnZzzQNCg1xa0uQbrOqPxHW/41XaE3KDRfqejEb3AmpgbN3YNt5TA9yks532aAqALrtbEM7wuoeBvbc2c6EUQE9/TMU1rxs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310840; c=relaxed/simple; bh=mPmolvHAcBMTIShhgLdXXMOUD8GBeSY8wUZZNyXtmXI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=J9wcMqFKVJGC5sn4v06DuZirv0LFh0feHyZZxn9ZONRXcKa3ISnnXVqiyVZEK/6xZ2fF51N7/aP1HvNsLJBH4NgCwRN1PP8EYk4tj/FU9meEdklyjn/RMhv35T0YR/JfgtfAAARa+UFn14TEL5y/y4FA5NgLfxx4Um5UFYuxou4= 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=hGyWAaVv; arc=none smtp.client-ip=209.85.214.171 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 Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-1d89518d3b1so5883815ad.0; Fri, 26 Jan 2024 15:13:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706310838; x=1706915638; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aZZIgE9h2jQLSmHO3bzM7GbmlOxYLfQCD/fuB/DQM9s=; b=hGyWAaVvZQNrrxP7Un4wFXI8kbYJUSEBvlY0oQg+18okqMTikxGrl2uVcgyhnljyz0 Ol+zVxwsqtirwthPvkoDrgMzv1sfotWsON3rqRLQUJl8FNgmzdDZe5rcC0SjIAhx7shp 2BbB6b5+D9E6wMAQIUhfPNTXt33kpx3dMV834Ofg3VUQ8biR0h7U/c30RJSB+gqqELVb mx2hLR+VrH+s5MTnD+yFaThi9GK0gbdTx7pm43jknVPOTIRwu5yQ0hnnKLLJgUSgJHir /owYo9DUpM2jM+k75Qht8vzlX60EUTsytRmlkIJtG1zkuAGjjxJePgKqFKUwxUTGIv0o Fg2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706310838; x=1706915638; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aZZIgE9h2jQLSmHO3bzM7GbmlOxYLfQCD/fuB/DQM9s=; b=OAh1EvnhEbemyLxY/+OS93NslwVxZF4Un+31WpAGRw1ytEV0SApB0KjaScnNtziCeC r22LTiA5KK3L7pqftU16z4sRJ6PYamYxxHTG8yApnXe1F47pFE/yPiOfXq3qETQiawOX 3Gum26AaCcA++PZsQjB9+FATpNUCQmpuKlH/0yrsDuq7kgQ/UgU6Jf5w8BETg/DOr2ds XSOLabA4Xr1rBl+gd6F/1dbzDmtDOZ7ASCYzQf4fDJD1PzXRzz65AY/75GXz0D019LFW 5+vBAeWouG4S3VJt9lJtRd58ETf6eJBhSyqcZ4jQXktdlN1h5Urcyjanp2xHtg2SWysY LDGA== X-Gm-Message-State: AOJu0YwBfgW6m5wHOvq6YnNbXSW3osr21C+5O/DQjJUnjzDNjIEJbK05 2ZWDVbxRTw6vQbNSrjy7En5+upG5Pm+xSMcUZGUSk/HMZ4BWXtF5 X-Received: by 2002:a17:903:28e:b0:1d0:4802:3b6c with SMTP id j14-20020a170903028e00b001d048023b6cmr733262plr.4.1706310838445; Fri, 26 Jan 2024 15:13:58 -0800 (PST) Received: from localhost ([2601:644:9380:8cd0::7fb4]) by smtp.gmail.com with ESMTPSA id l6-20020a170903244600b001d78813c8a5sm1423159pls.49.2024.01.26.15.13.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:13:58 -0800 (PST) From: Matthew Wood To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: leitao@debian.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 3/8] net: netconsole: move newline trimming to function Date: Fri, 26 Jan 2024 15:13:38 -0800 Message-ID: <20240126231348.281600-4-thepacketgeek@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240126231348.281600-1-thepacketgeek@gmail.com> References: <20240126231348.281600-1-thepacketgeek@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789197978651204707 X-GMAIL-MSGID: 1789197978651204707 Move newline trimming logic from `dev_name_store()` to a new function (trim_newline()) for shared use in netconsole.c Signed-off-by: Matthew Wood --- drivers/net/netconsole.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) -- 2.43.0 diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 085350beca87..b280d06bf152 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -230,6 +230,16 @@ static struct netconsole_target *to_target(struct config_item *item) struct netconsole_target, group); } +/* Get rid of possible trailing newline, returning the new length */ +static void trim_newline(char *s, size_t maxlen) +{ + size_t len; + + len = strnlen(s, maxlen); + if (s[len - 1] == '\n') + s[len - 1] = '\0'; +} + /* * Attribute operations for netconsole_target. */ @@ -424,7 +434,6 @@ static ssize_t dev_name_store(struct config_item *item, const char *buf, size_t count) { struct netconsole_target *nt = to_target(item); - size_t len; mutex_lock(&dynamic_netconsole_mutex); if (nt->enabled) { @@ -435,11 +444,7 @@ static ssize_t dev_name_store(struct config_item *item, const char *buf, } strscpy(nt->np.dev_name, buf, IFNAMSIZ); - - /* Get rid of possible trailing newline from echo(1) */ - len = strnlen(nt->np.dev_name, IFNAMSIZ); - if (nt->np.dev_name[len - 1] == '\n') - nt->np.dev_name[len - 1] = '\0'; + trim_newline(nt->np.dev_name, IFNAMSIZ); mutex_unlock(&dynamic_netconsole_mutex); return strnlen(buf, count); From patchwork Fri Jan 26 23:13:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wood X-Patchwork-Id: 192848 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2395:b0:106:343:edcb with SMTP id gw21csp205286dyb; Fri, 26 Jan 2024 15:15:43 -0800 (PST) X-Google-Smtp-Source: AGHT+IELzWFI7BZjsYRqn41+uZAky/k97L19O1WYcV7rRge2iH1VJIkaKOFR0Tn/izHBCMiVEkzs X-Received: by 2002:a17:906:f290:b0:a31:45a6:2bb5 with SMTP id gu16-20020a170906f29000b00a3145a62bb5mr256724ejb.40.1706310943779; Fri, 26 Jan 2024 15:15:43 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706310943; cv=pass; d=google.com; s=arc-20160816; b=HJc9vUdycV30EJXI110cw50njum7/iib3l6vmrZhi6iQGwHFdc3wTi/9+6PUgfH02E WsINULeusmvJt11opMF4t2zHH3j6XdE4/RIV7fvgrOTa+Nmmi2S80Un/sN1ZT7hk9IVy 2+x3Ic0THfSk/aO375UT+GG6n4+Gm5iwaK3E34Bx3Z/tuFgJc0diG5DI1v/ehCoIDYV+ muD5mdMRkBl+EPuxSERlW8VQt4m9K8MDa87B3BLts8QlNt2CbG5QM+vXjAJw3t88ObVm 6kTVpHqs7ZKqCuHYNR6Yt2oD5ClN29Vc1NsFxCvwwGhZ/U6FaUuIGXh1nlt4l5ciCXo7 PR3g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=gneFCt4ceG2iUK09c51bLYD/2KQfSVJ2BvbrNzbdXrk=; fh=3uQAHc0NqngPtrB5YLPjrfJArntTgtKXo4NRJp5QtWs=; b=R4TDyw3hrre4BQjbmfbJMQfTImame8qCQNcGu9oUxjz80jojPccCca7mCAWD8E4N3T TGduOvMSqmEFeHLTh+yk9pNrl76VL0fzEANP6ugPy9JdX7sGen0pJ1dwNWorVaVZPgyR 4VTN5U+/CUZZoAa7SUjYOVSBNAUF3Nx3wDmBi7CqqK932p/ddxD5B3qbIWJas96s5GbB Phn5Nm2TkPVH7k4MDM9bykBbi75Edgo8cYvoAGm1zvlT8RF6HiMpbX4PnalndXmjOEbU JTk+2bwVLTrU7RFUskkvUsujv6xmbqqnhrF279RMOdq/SBfSu8EUfTaa5Zl+Ww+HOZlm wCIw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=gjYlVpoV; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40811-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40811-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id j14-20020a170906278e00b00a3180b2c246si985194ejc.867.2024.01.26.15.15.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:15:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-40811-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=gjYlVpoV; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40811-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40811-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 3553B1F2280E for ; Fri, 26 Jan 2024 23:15:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1BA215BACA; Fri, 26 Jan 2024 23:14:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gjYlVpoV" Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (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 8953B5A7A9; Fri, 26 Jan 2024 23:14:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310844; cv=none; b=MHA1/MVcahNJWucmtdtUhBGTG1rIaowhPDxpAjqxPGpNJge1ZYtyzciZq1tLhOytMu9LhX3NH8APNNS7olW81PZnAznLe/g0YL2Q0KirnYTm+LUNpfZjAaHQEDofUymmPWNvY2bO7wFYP75WIwva9fBc9eC5GLJmr0Kh//nTCGg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310844; c=relaxed/simple; bh=JUBz4HV56EeU4/nPAgND0SO1KSnQD6Dq6LeiFiNVnDw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QOjtZ0PXo4b0f/lQNdOeUeibmms/GvmNcytq3Yv2pCr3hJj40EEj/MNPvSrgni7CGpNCnIKbj3DFIudGam8sY8SpefM+VjU9/wOoHPfFOSp+6gAvd2lPran+biyknm3nZAIrnlwP4rbLmKU3RK5zbMpLWYG1c3F0Y77wR3FCOk8= 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=gjYlVpoV; arc=none smtp.client-ip=209.85.214.172 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 Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-1d71e184695so6162055ad.3; Fri, 26 Jan 2024 15:14:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706310841; x=1706915641; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gneFCt4ceG2iUK09c51bLYD/2KQfSVJ2BvbrNzbdXrk=; b=gjYlVpoVAcTPdVotSYVxzOP2J18W/qtl/RzfofHdUILoNuZz31r2dW1vhg43RE25qC Fnypm6L1SJT8SMj3XuwSGDD1Oc2rfzsg/b80idoFlzTz3FDLzBs4mRMFzyjutZXaSxN7 ddp3EbGkt+DTd8X/qn+/7APBnopKhy3kjd6bXU8wj6MhoJzL+tKjUVBZF1oRlPb7BB1w lB+EizqwLfT27i+lPXnX4LJH1TIMJOLmsf41wCa7lMbfwceCdcM5gkVwoDDYsxRLsJbq cOZWy+HJvJ1ESTJd2EtHed8var8EZH18diZb0EzuuNITkDMXO1rgjCqZbGU660zojxsg vAzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706310841; x=1706915641; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gneFCt4ceG2iUK09c51bLYD/2KQfSVJ2BvbrNzbdXrk=; b=vX6utjTi8tIpO5WSUgNA+YfXzTjqimyyAHcD2xc/Be51+7KuaOw7qbM7qvqkWjWNKI 2VQqp3zkuZfzF1xpimn2n/4LKRvNCKX3akPyWnd+WUJQiKN2t8HDS89XPs2qh+DIjPCZ lb+L0Bv8QyDFVBoE/bERJr1Se0YqgYZJgps+zs6Yeuuek0vZgul5m1QAkVMu6dG+ip5l UHG59L1PK+n+urywPJiv5Uh+Z424rbmTGs9UsYfUZQE8pooaPVlrFRCyA3aYWTojaNd1 Ut+yOpgF8FF41bNMBzKiNt2jqyZhuFeZqu5RFgOvwnjwhlhzfsZvE/LRnWaRy7ajF8yM aKsQ== X-Gm-Message-State: AOJu0YzV62rrugyW96IUYEyeumRNmkTwVS7+KgIn80r1fRox8R9pasv0 d+ZF+wDg6C/IwsESWfF+RzIJih55B00rbZnoYwYsylsa5xc7ZMBJ X-Received: by 2002:a17:902:9f88:b0:1d7:7b3d:99b7 with SMTP id g8-20020a1709029f8800b001d77b3d99b7mr743822plq.132.1706310840741; Fri, 26 Jan 2024 15:14:00 -0800 (PST) Received: from localhost ([2601:644:9380:8cd0::7fb4]) by smtp.gmail.com with ESMTPSA id y20-20020a170902e19400b001d71923136csm1431251pla.211.2024.01.26.15.13.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:14:00 -0800 (PST) From: Matthew Wood To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Jonathan Corbet Cc: leitao@debian.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 4/8] net: netconsole: add docs for appending netconsole user data Date: Fri, 26 Jan 2024 15:13:39 -0800 Message-ID: <20240126231348.281600-5-thepacketgeek@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240126231348.281600-1-thepacketgeek@gmail.com> References: <20240126231348.281600-1-thepacketgeek@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789196703839526338 X-GMAIL-MSGID: 1789196703839526338 Add a new User Data section to the netconsole docs to describe the appending of user data capability (for netconsole dynamic configuration) with usage and netconsole output examples. Co-developed-by: Breno Leitao Signed-off-by: Breno Leitao Signed-off-by: Matthew Wood --- Documentation/networking/netconsole.rst | 68 +++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/Documentation/networking/netconsole.rst b/Documentation/networking/netconsole.rst index 390730a74332..54f072f47921 100644 --- a/Documentation/networking/netconsole.rst +++ b/Documentation/networking/netconsole.rst @@ -15,6 +15,8 @@ Extended console support by Tejun Heo , May 1 2015 Release prepend support by Breno Leitao , Jul 7 2023 +Userdata append support by Matthew Wood , Jan 22 2024 + Please send bug reports to Matt Mackall Satyam Sharma , and Cong Wang @@ -171,6 +173,72 @@ You can modify these targets in runtime by creating the following targets:: cat cmdline1/remote_ip 10.0.0.3 +Append User Data +================ + +Custom user data can be appended to the end of messages with netconsole +dynamic configuration enabled. User data entries can be modified without +changing the "enabled" attribute of a target. + +Directories (keys) under `userdata` are limited to 54 character length, and +data in `userdata//value` are limited to 200 bytes:: + + cd /sys/kernel/config/netconsole && mkdir cmdline0 + cd cmdline0 + mkdir userdata/foo + echo bar > userdata/foo/value + mkdir userdata/qux + echo baz > userdata/qux/value + +Messages will now include this additional user data:: + + echo "This is a message" > /dev/kmsg + +Sends:: + + 12,607,22085407756,-;This is a message + foo=bar + qux=baz + +Preview the userdata that will be appended with:: + + cd /sys/kernel/config/netconsole/cmdline0/userdata + for f in `ls userdata`; do echo $f=$(cat userdata/$f/value); done + +If a `userdata` entry is created but no data is written to the `value` file, +the entry will be omitted from netconsole messages:: + + cd /sys/kernel/config/netconsole && mkdir cmdline0 + cd cmdline0 + mkdir userdata/foo + echo bar > userdata/foo/value + mkdir userdata/qux + +The `qux` key is omitted since it has no value:: + + echo "This is a message" > /dev/kmsg + 12,607,22085407756,-;This is a message + foo=bar + +Delete `userdata` entries with `rmdir`:: + + rmdir /sys/kernel/config/netconsole/cmdline0/userdata/qux + +Beware of `userdata` entries with newlines since values are printed with +newlines preserved. A userdatum value with a newline could cause the +netconsole message receiver to interpret a value as a new userdata key:: + + cat userdata/foo/value + bar + bar2 + +The `qux` key is omitted since it has no value:: + + echo "This is a message" > /dev/kmsg + 12,607,22085407756,-;This is a message + foo=bar + bar2 + Extended console: ================= From patchwork Fri Jan 26 23:13:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wood X-Patchwork-Id: 192849 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2395:b0:106:343:edcb with SMTP id gw21csp205465dyb; Fri, 26 Jan 2024 15:16:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IGhQHISWQHtsxSOR9r0pCn2cGKvzh/VE3dt70Q69hAlJZYYzD3xHpj39HHwHGz4FiLviI0t X-Received: by 2002:a17:906:3651:b0:a2d:357a:f5f8 with SMTP id r17-20020a170906365100b00a2d357af5f8mr241558ejb.39.1706310965195; Fri, 26 Jan 2024 15:16:05 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706310965; cv=pass; d=google.com; s=arc-20160816; b=WA+lsioZMwToOpO21ABoj5EmpI/ixb8L9NY5PsIEtpAvadppZEt1ACYQPqB0XTHk1e 2k/iwx0zgJyKqKgiKh+AxiTNJN5PaTw3aEdjNsHtDUo6MFsa2ubmVAnuQiv+XLutvbT5 zbvAB4fDc01vid0I4/a1ugbWcZxnBFhhpoEVe+EN+4RTWeQkeZpirHoXq38qlXgnKTkT rmLfjGkfh/waOtE1eLLpXgB/SLC+t8koY16+2Ok1XtplXsDkoNfzn3cGctf7O3Pzlmfq RosZdj5MqYcTMPidP70fr20zn888rt0PnvXmkqKM6TsLK+A5aiU/TcDaCgBiOY0lbcnT uIzw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=EvBhPn9ZH1DBkVaPM0Ti+Jleq5aPuYncHEARZsqxOXU=; fh=+EB6oBnXtBrxaPMIm1rb1kOyvjkddCLSgL4/UeSWQvM=; b=gJt7rGMyr2mM0gEtrUM+DQB4vZ9bHPQPaORjzl0VAghXb6JZhDtg2765lYFhNycxvI VNszKBGSI6AhGdTSEd9ouk+IuzcJsfTQ3WwMRP+V7dlzJV62Fuzh5t4jf2TctssGpXqs A3Jc1c7a33PUvsDk5znru1GLCZpN5P+YbQdTWkBvxcY0Ptjo/ksbphBxpBO6A32ybYk0 VNRFfm/yxT44jSvGEAzAIv4J8nX83d6HPm+ezXO8tuBRgY6on0Js75bxTEBqlh2SmVdk YHn1e9HYtClJ+Y4YWzuWnaas50B1blUrfEQfhvpJESFq0L4VqwEfUOmbGCXpRcKK3Hen c8Gw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=bVQMOUP4; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40812-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40812-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id jp17-20020a170906f75100b00a34e1991c45si956511ejb.1025.2024.01.26.15.16.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:16:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-40812-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=bVQMOUP4; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40812-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40812-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id A5EB11F23122 for ; Fri, 26 Jan 2024 23:16:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A610F5C5F3; Fri, 26 Jan 2024 23:14:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bVQMOUP4" Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (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 1B3585B5A2; Fri, 26 Jan 2024 23:14:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310845; cv=none; b=rWAYuD2ICUS3aRM3YZUg5IU8/qBeOM4V+xRFITuHX77Xb2OQbKY5vbuZ4yUyfaoW3GtHUhRPT9v2Q+uvvNLIcve8A4SG423pA/TXSjzghWcOFb+r6/iblKy/3oVxfB15rNBTFdBTHpkPBTFfqgd/XjR2yg1X+42CbnDdHErmbW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310845; c=relaxed/simple; bh=ZxSvQuKIvS929xpYXb9PbVGUkIwgggEnc5f94Q8zZVA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CUQstiTk0aW61KNqVcQ8Eldk0T/XBqOhSc/u044MU70qbg3Nm3YxNvtjL7Z9g45/DFsNvY7Zu9yJWkjkk2kIJ/l7EoYRJ5XtW5cERQgfjsbw4OCeek1mUmoQUdvrYk99/FK5UG8BOxzuK2KscG6tnHi+y//otpfhcpQemHp8Xmo= 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=bVQMOUP4; arc=none smtp.client-ip=209.85.210.173 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 Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-6db9e52bbccso605645b3a.3; Fri, 26 Jan 2024 15:14:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706310843; x=1706915643; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EvBhPn9ZH1DBkVaPM0Ti+Jleq5aPuYncHEARZsqxOXU=; b=bVQMOUP4iWXxu5PcRSEbqKNWNiKFrS9NrEEeKwCqcQ/UFEHZscZwq9m1Cg56klDPWR gWwXS+ovsd1rxX4krmwwAnW2JawvHdpjSQmt1ZRYdOEFuRRIt+yyx5exYupOEwN+qXh9 4VeGj/akNvPHew4JKSGeiUsYgmvsNKRb0l4PxTojmaDtKHlhgEKVJoMIeGAoDXIwtG1C Swjf3U2u41UxA0LyKjd/qhjlIRrV+mEjqGMs6Lv8SWE0o/9E9bS60IK74a2ME+lKjbnH Yz3jbdKJzfrFuibIHba39gIFVEuT/mBsGYPCMGXJKSlr9BkBk5Q1vuUiFEXW/nIowiXS E03g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706310843; x=1706915643; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EvBhPn9ZH1DBkVaPM0Ti+Jleq5aPuYncHEARZsqxOXU=; b=vfiD01V8CHBeGi0EqIVZjbZ0vBSzZzE7d+55AQ+P1DODu3lprP3rX+IiflEJ98mWDt xmhFw2yCYdde2IYo2vuP/GooQHQfyTh6doF8IlUwousT7bJXV7uP1IuZ+u3O1YwRd/Eq IWBL1tx3xmYoz0wruftqJsnOgb4R6WTkCM7DXFqyjVa4E4jcpJg01G6vCfWs2caHgBYq sAV4kzzLwHYJJi5QaCxknFXO4oXbCquxwxAvkFwoykAcF1nm7Ln6lSrBUtTK5kUEFd3x gZe1QccBKgPUHkFBm2p8DhAGuaDI8czV3rjgfgmXre4UWd/meWFvEF4XDOgR147+0OWM YU9g== X-Gm-Message-State: AOJu0YySGQCNFKiNTMLQ9bPbNsWq9/6ZFeIy73ctsSTIQ7j+3Hphey2m JBMM9OC/H+NZOS9hjQBDzf39Q5wX9xJIHHL0OnzwmQkvpdx95yBS0zZ0yXly X-Received: by 2002:a05:6a00:991:b0:6db:c9d2:12d4 with SMTP id u17-20020a056a00099100b006dbc9d212d4mr920125pfg.17.1706310843307; Fri, 26 Jan 2024 15:14:03 -0800 (PST) Received: from localhost ([2601:644:9380:8cd0::7fb4]) by smtp.gmail.com with ESMTPSA id o194-20020a62cdcb000000b006dab0d72cd0sm1674724pfg.214.2024.01.26.15.14.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:14:02 -0800 (PST) From: Matthew Wood To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: leitao@debian.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 5/8] net: netconsole: add a userdata config_group member to netconsole_target Date: Fri, 26 Jan 2024 15:13:40 -0800 Message-ID: <20240126231348.281600-6-thepacketgeek@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240126231348.281600-1-thepacketgeek@gmail.com> References: <20240126231348.281600-1-thepacketgeek@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789196726337609160 X-GMAIL-MSGID: 1789196726337609160 Create configfs machinery for netconsole userdata appending, which depends on CONFIG_NETCONSOLE_DYNAMIC (for configfs interface). Add a userdata config_group to netconsole_target for managing userdata entries as a tree under the netconsole configfs subsystem. Directory names created under the userdata directory become userdatum keys; the userdatum value is the content of the value file. Include the minimum-viable-changes for userdata configfs config_group. init_target_config_group() ties in the complete configfs machinery to avoid unused func/variable errors during build. Initializing the netconsole_target->group is moved to init_target_config_group, which will also init and add the userdata config_group. Each userdatum entry has a limit of 256 bytes (54 for the key/directory, 200 for the value, and 2 for '=' and '\n' characters), which is enforced by the configfs functions for updating the userdata config_group. When a new netconsole_target is created, initialize the userdata config_group and add it as a default group for netconsole_target config_group, allowing the userdata configfs sub-tree to be presented in the netconsole configfs tree under the userdata directory. Co-developed-by: Breno Leitao Signed-off-by: Breno Leitao Signed-off-by: Matthew Wood --- drivers/net/netconsole.c | 143 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 139 insertions(+), 4 deletions(-) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index b280d06bf152..a5ac21136f02 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -43,6 +43,10 @@ MODULE_DESCRIPTION("Console driver for network interfaces"); MODULE_LICENSE("GPL"); #define MAX_PARAM_LENGTH 256 +#define MAX_USERDATA_NAME_LENGTH 54 +#define MAX_USERDATA_VALUE_LENGTH 200 +#define MAX_USERDATA_ENTRY_LENGTH 256 +#define MAX_USERDATA_ITEMS 16 #define MAX_PRINT_CHUNK 1000 static char config[MAX_PARAM_LENGTH]; @@ -80,6 +84,7 @@ static struct console netconsole_ext; * struct netconsole_target - Represents a configured netconsole target. * @list: Links this target into the target_list. * @group: Links us into the configfs subsystem hierarchy. + * @userdata_group: Links to the userdata configfs hierarchy * @enabled: On / off knob to enable / disable target. * Visible from userspace (read-write). * We maintain a strict 1:1 correspondence between this and @@ -103,6 +108,7 @@ struct netconsole_target { struct list_head list; #ifdef CONFIG_NETCONSOLE_DYNAMIC struct config_group group; + struct config_group userdata_group; #endif bool enabled; bool extended; @@ -215,6 +221,10 @@ static struct netconsole_target *alloc_and_init(void) * | remote_ip * | local_mac * | remote_mac + * | userdata/ + * | / + * | value + * | ... * | * /... */ @@ -596,6 +606,123 @@ static ssize_t remote_mac_store(struct config_item *item, const char *buf, return -EINVAL; } +struct userdatum { + struct config_item item; + char value[MAX_USERDATA_VALUE_LENGTH]; +}; + +static inline struct userdatum *to_userdatum(struct config_item *item) +{ + return container_of(item, struct userdatum, item); +} + +struct userdata { + struct config_group group; +}; + +static inline struct userdata *to_userdata(struct config_item *item) +{ + return container_of(to_config_group(item), struct userdata, group); +} + +static struct netconsole_target *userdata_to_target(struct userdata *ud) +{ + struct config_group *netconsole_group; + + netconsole_group = to_config_group(ud->group.cg_item.ci_parent); + return to_target(&netconsole_group->cg_item); +} + +static ssize_t userdatum_value_show(struct config_item *item, char *buf) +{ + return sysfs_emit(buf, "%s\n", &(to_userdatum(item)->value[0])); +} + +static ssize_t userdatum_value_store(struct config_item *item, const char *buf, + size_t count) +{ + struct userdatum *udm = to_userdatum(item); + int ret; + + if (count > MAX_USERDATA_VALUE_LENGTH) + return -EMSGSIZE; + + mutex_lock(&dynamic_netconsole_mutex); + + ret = strscpy(udm->value, buf, sizeof(udm->value)); + if (ret < 0) + goto out_unlock; + trim_newline(udm->value, sizeof(udm->value)); + + mutex_unlock(&dynamic_netconsole_mutex); + return count; +out_unlock: + mutex_unlock(&dynamic_netconsole_mutex); + return ret; +} + +CONFIGFS_ATTR(userdatum_, value); + +static struct configfs_attribute *userdatum_attrs[] = { + &userdatum_attr_value, + NULL, +}; + +static void userdatum_release(struct config_item *item) +{ + kfree(to_userdatum(item)); +} + +static struct configfs_item_operations userdatum_ops = { + .release = userdatum_release, +}; + +static const struct config_item_type userdatum_type = { + .ct_item_ops = &userdatum_ops, + .ct_attrs = userdatum_attrs, + .ct_owner = THIS_MODULE, +}; + +static struct config_item *userdatum_make_item(struct config_group *group, + const char *name) +{ + struct netconsole_target *nt; + struct userdatum *udm; + struct userdata *ud; + size_t child_count; + + if (strlen(name) > MAX_USERDATA_NAME_LENGTH) + return ERR_PTR(-ENAMETOOLONG); + + ud = to_userdata(&group->cg_item); + nt = userdata_to_target(ud); + child_count = list_count_nodes(&nt->userdata_group.cg_children); + if (child_count >= MAX_USERDATA_ITEMS) + return ERR_PTR(-ENOSPC); + + udm = kzalloc(sizeof(*udm), GFP_KERNEL); + if (!udm) + return ERR_PTR(-ENOMEM); + + config_item_init_type_name(&udm->item, name, &userdatum_type); + return &udm->item; +} + +static struct configfs_attribute *userdata_attrs[] = { + NULL, +}; + +static struct configfs_group_operations userdata_ops = { + .make_item = userdatum_make_item, +}; + +static struct config_item_type userdata_type = { + .ct_item_ops = &userdatum_ops, + .ct_group_ops = &userdata_ops, + .ct_attrs = userdata_attrs, + .ct_owner = THIS_MODULE, +}; + CONFIGFS_ATTR(, enabled); CONFIGFS_ATTR(, extended); CONFIGFS_ATTR(, dev_name); @@ -640,6 +767,14 @@ static const struct config_item_type netconsole_target_type = { .ct_owner = THIS_MODULE, }; +static void init_target_config_group(struct netconsole_target *nt, const char *name) +{ + config_group_init_type_name(&nt->group, name, &netconsole_target_type); + config_group_init_type_name(&nt->userdata_group, "userdata", + &userdata_type); + configfs_add_default_group(&nt->userdata_group, &nt->group); +} + static struct netconsole_target *find_cmdline_target(const char *name) { struct netconsole_target *nt, *ret = NULL; @@ -675,6 +810,7 @@ static struct config_group *make_netconsole_target(struct config_group *group, strlen(NETCONSOLE_PARAM_TARGET_PREFIX))) { nt = find_cmdline_target(name); if (nt) { + init_target_config_group(nt, name); return &nt->group; } } @@ -683,8 +819,8 @@ static struct config_group *make_netconsole_target(struct config_group *group, if (!nt) return ERR_PTR(-ENOMEM); - /* Initialize the config_item member */ - config_group_init_type_name(&nt->group, name, &netconsole_target_type); + /* Initialize the config_group member */ + init_target_config_group(nt, name); /* Adding, but it is disabled */ spin_lock_irqsave(&target_list_lock, flags); @@ -741,8 +877,7 @@ static void populate_configfs_item(struct netconsole_target *nt, snprintf(target_name, sizeof(target_name), "%s%d", NETCONSOLE_PARAM_TARGET_PREFIX, cmdline_count); - config_group_init_type_name(&nt->group, target_name, - &netconsole_target_type); + init_target_config_group(nt, target_name); } #endif /* CONFIG_NETCONSOLE_DYNAMIC */ From patchwork Fri Jan 26 23:13:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wood X-Patchwork-Id: 192850 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2395:b0:106:343:edcb with SMTP id gw21csp205649dyb; Fri, 26 Jan 2024 15:16:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IFWJdnTRmK9ikrVR4bJXodVbh5e1Tt/BYcMGZqmOzUlSB3drv7ycuMPNd3+4WDCtBmWvzt0 X-Received: by 2002:a05:6402:134e:b0:55d:2bd4:c36f with SMTP id y14-20020a056402134e00b0055d2bd4c36fmr215397edw.40.1706310992479; Fri, 26 Jan 2024 15:16:32 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706310992; cv=pass; d=google.com; s=arc-20160816; b=VD0wiHtmNZ7kq6GKk8eJlyiwyQLozDor7zysNzXaz7hhtKycAHeTVtc3+kiVKqZirV 97l6aV3E7vByzOgw+sU8qDDLPqM32NMmWXNWZPu2k1K3IoW/Lc322qJIfxCVyMe3/EKE Zso1Qgt5NSZuL6O6myTvdaqWeeE6W5l7NtI8vhV+99NfmaQMBYjfcPDLuuryBk7Ze5zJ T+dJsq/EkQoYlNJ5V70whlV+L+qU7/cho8ShbhmM4AeAV/9Qj7BMuSlD7V8NRscMBxaQ 7Ixcd/7ZNjMqnTgAn4la+Cfy8Ouz9q2Fy5/QetO6TpJ4E1RRNCK3MqnlgqE/Gf+Kzrlp peEw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=z0a3xVOioHV0fcyUnpVH+o+i1bddgGqzpiLWHZ2ggjQ=; fh=+EB6oBnXtBrxaPMIm1rb1kOyvjkddCLSgL4/UeSWQvM=; b=TshV77F0j6gZHExPcw+DlKUPzo45vJuel9oQdkIXSyJQO2VyFG83XDjnz7PKzem6hq 1Gt0135CYhgYCNJiobKRGKn+4L+LpPxBi2aA1qdJLNA/fjctKUSXqOkYHYt2M/mixj/Y +49Bn/Bj1M6rgoS3hyLsC1K30k3f2wDzHcdULSDf8lhdWSrh3C7dWSViMl1TxEsOURoH h0t2sfs52BMHmwCuIQOZ5xL9pn1S66AulC6zaFyk5+0OydQ+lBSft4Yd6nK2/2s74Dl2 vFSFtmGLw3MwUoKCgssWYl0oJKHJa3WbljNU3dA+afNIJmCVdVjDPKccATdlCvZPz5MM ZFbw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=ZgHA32Qg; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40813-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40813-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id ee42-20020a056402292a00b0055729eed820si1108107edb.37.2024.01.26.15.16.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:16:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-40813-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=ZgHA32Qg; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40813-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40813-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 701831F2586C for ; Fri, 26 Jan 2024 23:16:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 40DA35F57E; Fri, 26 Jan 2024 23:14:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZgHA32Qg" Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (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 435E65B5D6; Fri, 26 Jan 2024 23:14:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310847; cv=none; b=PIULzRa28GjzjPpq/+m9wDBFKZodBiZmzBtNC2p+R4d2Dk6vvdkaRaSI6rXXd2e8ZqzyxdVn6n97cJoNldocmu3EmzRqFQtmfekRANfPSWzFW7S1HQdtWDBaIlJal39q6I0W8d0edyeAGMneVmH+zjsbdhtdJNI+oTb/9jjJcdM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310847; c=relaxed/simple; bh=Bc3/rP4FzHSw4aRd7+PyEDpdKAfXelggIHNsOTR05EM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A9Xh3aMeRmtmc4ED6cXFBaTDsPKbp6tMUAVcy0R2b9VrBKcSTZcO4lUSn+BfBSnBrNVSpYKI2yPzVC30Zxt13rvTSyJJPJaxyKWfKNzIAUmFpiH6idtfs/Sp5lwJRSyOXkJ7NYujtxYAOmguBiy5926FlFW2yfDcnZIn0vSEpGM= 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=ZgHA32Qg; arc=none smtp.client-ip=209.85.214.173 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 Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-1d746856d85so7574795ad.0; Fri, 26 Jan 2024 15:14:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706310845; x=1706915645; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=z0a3xVOioHV0fcyUnpVH+o+i1bddgGqzpiLWHZ2ggjQ=; b=ZgHA32QgZpnAtQrVrojEzMEbHPKU1bHTqxtNetJUnmTsjKEnvZTS1D9FbVYrVHzIRm ZavUsJAC1Lh+ysEnmDzz9xA4qHFr+poTeqFIoMGbUb+GQLwsbARY+Bu2/nG0UrEjh2Ef JMUO1BAxUorzuwGHd/Wi6/wdC+6Vf6LzbvPfi1Xi8yU1K8bDKsr04OhWPjrDAfbi3008 6IKR/TvNbOq8GOx9AImKNhQKzCCGkv4GnJi89NWWxr5brLQEPq4b+YQpJTF6/ob0MsGL 5SGjTpLmb8/uMizjS/QywVBlwhxY3s1MCMEC8Y1ZJhQZUh5ldmbeq0ikMsbvoFO19F/i 5IfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706310845; x=1706915645; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=z0a3xVOioHV0fcyUnpVH+o+i1bddgGqzpiLWHZ2ggjQ=; b=DaIxvsa8Enl/AqajhpH7rXs9q+NkG6RhizZLrt0225M1jQM+VNPdxJhYSEoiPI7eas pHqAnN/fA6g70c6kKudFUTL6iddW2s3hMUddLuOUFo8FvNW0pRrmNLsqmj6R9SA2lKuY hebYFd7Lzv2eyMIdfmk9gMPu5xYCY1dDTqiHjDjM+MshF6Qhd8S9vpGpvuzcde04CF53 8AMyNdwigcunrXROqVrmxfFwXUqdJCvTPUDHYvHdk9WbUx9rkNuD5XG4tzA06U1jEqr5 /2QNin6vhdnqlwo8AJdPNGKuGpP3wJ3rvp8GUsMYCpchDcbzSzNG2PaTizR4nTnrx5Zb KwyA== X-Gm-Message-State: AOJu0YyH3emG3b3o3mT929r4rMbnULw91HghG+6OHmO/slosFqoJ7qER j+cge/fRz7KjbH28RvZPuKONBn9E2RSctCxZ6t0Z3MuCXzpY+XHKFZNBEwv/ X-Received: by 2002:a17:903:230b:b0:1d7:4060:78b3 with SMTP id d11-20020a170903230b00b001d7406078b3mr707698plh.39.1706310845576; Fri, 26 Jan 2024 15:14:05 -0800 (PST) Received: from localhost ([2601:644:9380:8cd0::7fb4]) by smtp.gmail.com with ESMTPSA id ji2-20020a170903324200b001d76b1029c6sm1434416plb.2.2024.01.26.15.14.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:14:05 -0800 (PST) From: Matthew Wood To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: leitao@debian.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 6/8] net: netconsole: cache userdata formatted string in netconsole_target Date: Fri, 26 Jan 2024 15:13:41 -0800 Message-ID: <20240126231348.281600-7-thepacketgeek@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240126231348.281600-1-thepacketgeek@gmail.com> References: <20240126231348.281600-1-thepacketgeek@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789196755218036256 X-GMAIL-MSGID: 1789196755218036256 Store a formatted string for userdata that will be appended to netconsole messages. The string has a capacity of 4KB, as calculated by the userdatum entry length of 256 bytes and a max of 16 userdata entries. Update the stored netconsole_target->userdata_complete string with the new formatted userdata values when a userdatum is created, edited, or removed. Each userdata entry contains a trailing newline, which will be formatted as such in netconsole messages:: 6.7.0-rc8-virtme,12,500,1646292204,-;test release=foo something=bar 6.7.0-rc8-virtme,12,500,1646292204,-;another test release=foo something=bar Enforcement of MAX_USERDATA_ITEMS is done in userdatum_make_item; update_userdata will not check for this case but will skip any userdata children over the limit of MAX_USERDATA_ITEMs. If a userdata entry/dir is created but no value is provided, that entry will be skipped. This is in part because update_userdata() can't be called in userdatum_make_item() since the item will not have been added to the userdata config_group children yet. To preserve the experience of adding an empty userdata that doesn't show up in the netconsole messages, purposefully skip emtpy userdata items even when update_userdata() can be called. Co-developed-by: Breno Leitao Signed-off-by: Breno Leitao Signed-off-by: Matthew Wood --- drivers/net/netconsole.c | 63 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index a5ac21136f02..73feba0b3c93 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -85,6 +85,8 @@ static struct console netconsole_ext; * @list: Links this target into the target_list. * @group: Links us into the configfs subsystem hierarchy. * @userdata_group: Links to the userdata configfs hierarchy + * @userdata_complete: Cached, formatted string of append + * @userdata_length: String length of userdata_complete * @enabled: On / off knob to enable / disable target. * Visible from userspace (read-write). * We maintain a strict 1:1 correspondence between this and @@ -109,6 +111,8 @@ struct netconsole_target { #ifdef CONFIG_NETCONSOLE_DYNAMIC struct config_group group; struct config_group userdata_group; + char userdata_complete[MAX_USERDATA_ENTRY_LENGTH * MAX_USERDATA_ITEMS]; + size_t userdata_length; #endif bool enabled; bool extended; @@ -638,10 +642,50 @@ static ssize_t userdatum_value_show(struct config_item *item, char *buf) return sysfs_emit(buf, "%s\n", &(to_userdatum(item)->value[0])); } +static void update_userdata(struct netconsole_target *nt) +{ + int complete_idx = 0, child_count = 0; + struct list_head *entry; + struct userdata *ud; + + /* Clear the current string in case the last userdatum was deleted */ + nt->userdata_length = 0; + nt->userdata_complete[0] = 0; + + ud = to_userdata(&nt->userdata_group.cg_item); + list_for_each(entry, &nt->userdata_group.cg_children) { + struct userdatum *udm_item; + struct config_item *item; + + if (child_count >= MAX_USERDATA_ITEMS) + break; + child_count++; + + item = container_of(entry, struct config_item, ci_entry); + udm_item = to_userdatum(item); + + /* Skip userdata with no value set */ + if (strnlen(udm_item->value, MAX_USERDATA_VALUE_LENGTH) == 0) + continue; + + /* This doesn't overflow userdata_complete since it will write + * one entry length (1/MAX_USERDATA_ITEMS long), entry count is + * checked to not exceed MAX items with child_count above + */ + complete_idx += scnprintf(&nt->userdata_complete[complete_idx], + MAX_USERDATA_ENTRY_LENGTH, "%s=%s\n", + item->ci_name, udm_item->value); + } + nt->userdata_length = strnlen(nt->userdata_complete, + sizeof(nt->userdata_complete)); +} + static ssize_t userdatum_value_store(struct config_item *item, const char *buf, size_t count) { struct userdatum *udm = to_userdatum(item); + struct netconsole_target *nt; + struct userdata *ud; int ret; if (count > MAX_USERDATA_VALUE_LENGTH) @@ -654,6 +698,10 @@ static ssize_t userdatum_value_store(struct config_item *item, const char *buf, goto out_unlock; trim_newline(udm->value, sizeof(udm->value)); + ud = to_userdata(item->ci_parent); + nt = userdata_to_target(ud); + update_userdata(nt); + mutex_unlock(&dynamic_netconsole_mutex); return count; out_unlock: @@ -708,12 +756,27 @@ static struct config_item *userdatum_make_item(struct config_group *group, return &udm->item; } +static void userdatum_drop(struct config_group *group, struct config_item *item) +{ + struct netconsole_target *nt; + struct userdata *ud; + + ud = to_userdata(&group->cg_item); + nt = userdata_to_target(ud); + + mutex_lock(&dynamic_netconsole_mutex); + update_userdata(nt); + config_item_put(item); + mutex_unlock(&dynamic_netconsole_mutex); +} + static struct configfs_attribute *userdata_attrs[] = { NULL, }; static struct configfs_group_operations userdata_ops = { .make_item = userdatum_make_item, + .drop_item = userdatum_drop, }; static struct config_item_type userdata_type = { From patchwork Fri Jan 26 23:13:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wood X-Patchwork-Id: 192851 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2395:b0:106:343:edcb with SMTP id gw21csp205683dyb; Fri, 26 Jan 2024 15:16:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IEGeqvI+8cPZrB4EN4FCFyMhKvM7bzUbi5PNKke/3Aj1xIM3dfM/WYOK1AkYS7blgLhmuJV X-Received: by 2002:a17:906:c2d0:b0:a30:d252:caf3 with SMTP id ch16-20020a170906c2d000b00a30d252caf3mr423184ejb.36.1706310997270; Fri, 26 Jan 2024 15:16:37 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706310997; cv=pass; d=google.com; s=arc-20160816; b=k/ou/4in8Z0YxQx5Q9rpZT3oDEF4buUf2DazgrhYdGaUnMNcliFXLnZmcswTYSQuOr lm7ZI1L61SfkkO0idewwTWcpBfnSPqnc+8gU/HiwJKQGI5/3rLnZJX3K582eUpAYCKY5 XCa+WkGdhUKu0yazFJtV4L6DMr3mFYkF1npZRSo+yRTSZ/gK6hSDCK0LE5yTZetdi3Q2 jHMjjt/8Rc9plsR94HXWwXKtzXdvUfU8l3EDukr4cVSEBKw4MPVuAjwF39jCOe0XC/l+ Ci6qSS9/FXqZb3j/bScfXBERn3r/drWcXsMGbm98keBGeXhRSMDWkvKsRXrx6QAUDWqv MU/Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=je2dXIpj4nMvLmLfnHTiHfBkXHkQg5LdUrpAF1wy3tM=; fh=+EB6oBnXtBrxaPMIm1rb1kOyvjkddCLSgL4/UeSWQvM=; b=dgIblw0XogBIrn7yYuYK7dUh36VhEr86BB/kDhDzTUvv2i7UmpOcTyh/Uw+zyq6hXh NUuu7X72Be5hxGf9JQdMvw0+MF999NwWc0k81kxcUJs57wV4h5GY5x9BHSGhylYvwlam LhZDaRMXrZq2Qc7s1sgMyFYzN7ja6RwenwTPh5QmtNPjeu8HkK7l1GBzTkxMXm4DqvcD h4ZjtVaUT71WhyglfZQ6UouDgoZYx2mang7G79kSPyqNAuP76qUIebJAQr1PV0dGuBeW WTd+AM6YcuViuVPpdjriM52xRzo240xlGJr5JiAEzg2+WbqZfkwL8sBOx4qAuxilrbeL lZtw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=P5tZxgUi; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40814-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40814-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id k7-20020a17090627c700b00a31074e5d35si1074988ejc.79.2024.01.26.15.16.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:16:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-40814-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=P5tZxgUi; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40814-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40814-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 3A6B71F23CE8 for ; Fri, 26 Jan 2024 23:16:32 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6CBDB5F879; Fri, 26 Jan 2024 23:14:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="P5tZxgUi" Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (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 4571D5BAE5; Fri, 26 Jan 2024 23:14:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310849; cv=none; b=WJa7yp6/Xt2fl3gCIih8QijgeUE/Rmi0JJsXAe10PWyOQKXZFAAgcRGIqJR34ncUXS3vDTgz1vZk8VwBH9Zooth3xZeHjaWcRFE/jSH5KRt7o0he4C4WZwPuijw/AnwjKrSweTBpGypfvO4n7si0pJ2KsVMWsUKVOB7E9wWWZok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310849; c=relaxed/simple; bh=aKiWzgmFK3XS1BsGpO2cXonb0cWCM59n3esPDJ++t1o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AIFnnaF44X4ARCLGbHVLlfFrBc5h9fnMg5DxKXs9OjQxolzAOqh1lSNF2muKrQ6DRhGZqHGkII+OKfWB1Yz1/qY/UbSDjdeTZmaXP1PluKD5G/YGd2JR+HlL/sB2/iIL559Rga7fTBQeiG5PRlMbpyKKRIsvdWGhu6ZbFU4K0Ek= 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=P5tZxgUi; arc=none smtp.client-ip=209.85.210.169 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 Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-6db0fdd2b8fso552024b3a.2; Fri, 26 Jan 2024 15:14:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706310847; x=1706915647; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=je2dXIpj4nMvLmLfnHTiHfBkXHkQg5LdUrpAF1wy3tM=; b=P5tZxgUid81mNNLCbZ/QlNMPUoQ4itwQzaOKdrTe7ytzhsGJoh2w3L/eMDn+D/N3T7 2KBdZHqcLHtX0HL4DHQ+H931hYyxXUeTYkzN1ba69kImBDIDBxe4VdX23toDYqH3ncdt fShm6u1YhmgtA9z89mM3QxiC28PTeHJWWyaZ1PDV8o9W0Y/ChIjqOYW8A/gigjnWvjdQ 8REiq4yHF+C7B2lwbqwrSoqmGcXiHtQXjhhuTA/nsU/LzChJBYUxsrMi4MLo0D+0BLmN n1/qazU9fTbCFjg3F6AQavRvOz9PaXH7dg/IlDokqmVF6zeP/VWITGur7X4feIjfROY/ 4ZPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706310847; x=1706915647; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=je2dXIpj4nMvLmLfnHTiHfBkXHkQg5LdUrpAF1wy3tM=; b=NGx9RIia+XztDKEoC3fx13Qm4B56zfuZSvGEnabHmSP5siOKzypQbuUT3pnrR/EpWn 7hdSR+HKXSh/TLFv/ZQL5XAdvk2Wpqo5hL6DU038V85H0UShlPDK7I4iP3IVuWlMvUTl Rur0bKnQSfJTfnQspSaxvwPKeAbF5PCFiNbAII47ay0yfek1euYlUqM8612/TDoU9Wel nrcrmK9C9ZqOXdkRCWZmUp5S8zFVxXLHg1rFEydKFBvjPP1kG8V5tPbNWRIu+3/EYsZ7 ZU/ashLdmYEw5LMZMjjF6ua0mIfiqW8T+v77jUuSjlTggGmM0DMCalv4uS87L2/3sOT+ ZgGQ== X-Gm-Message-State: AOJu0YzTBHRBaLMFifBW7jj8aJRt7y2vT+qCW1vZ294gM6Q/vZwsjBar ngZaJ656XASpz0RJdHcC8+FL0XKy6e2ed1SO5tAeKKliiJH6tzRI X-Received: by 2002:a17:902:c70c:b0:1d7:38fc:1272 with SMTP id p12-20020a170902c70c00b001d738fc1272mr587369plp.75.1706310847695; Fri, 26 Jan 2024 15:14:07 -0800 (PST) Received: from localhost ([2601:644:9380:8cd0::7fb4]) by smtp.gmail.com with ESMTPSA id o2-20020a170902e00200b001d748fac506sm1446405plo.82.2024.01.26.15.14.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:14:07 -0800 (PST) From: Matthew Wood To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: leitao@debian.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 7/8] net: netconsole: append userdata to netconsole messages Date: Fri, 26 Jan 2024 15:13:42 -0800 Message-ID: <20240126231348.281600-8-thepacketgeek@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240126231348.281600-1-thepacketgeek@gmail.com> References: <20240126231348.281600-1-thepacketgeek@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789196760411908125 X-GMAIL-MSGID: 1789196760411908125 Append userdata to outgoing unfragmented (<1000 bytes) netconsole messages. When sending messages the userdata string is already formatted and stored in netconsole_target->userdata_complete. Always write the outgoing message to buf, so userdata can be appended in a standard fashion. This is a change from only using buf when the release needs to be prepended to the message. Co-developed-by: Breno Leitao Signed-off-by: Breno Leitao Signed-off-by: Matthew Wood --- drivers/net/netconsole.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 73feba0b3c93..de668a0794b1 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -1035,19 +1035,34 @@ static void send_ext_msg_udp(struct netconsole_target *nt, const char *msg, const char *msg_ready = msg; const char *release; int release_len = 0; + int userdata_len = 0; + char *userdata = NULL; + +#ifdef CONFIG_NETCONSOLE_DYNAMIC + userdata = nt->userdata_complete; + userdata_len = nt->userdata_length; +#endif if (nt->release) { release = init_utsname()->release; release_len = strlen(release) + 1; } - if (msg_len + release_len <= MAX_PRINT_CHUNK) { + if (msg_len + release_len + userdata_len <= MAX_PRINT_CHUNK) { /* No fragmentation needed */ if (nt->release) { scnprintf(buf, MAX_PRINT_CHUNK, "%s,%s", release, msg); msg_len += release_len; - msg_ready = buf; + } else { + memcpy(buf, msg, msg_len); } + + if (userdata) + msg_len += scnprintf(&buf[msg_len], + MAX_PRINT_CHUNK - msg_len, + "%s", userdata); + + msg_ready = buf; netpoll_send_udp(&nt->np, msg_ready, msg_len); return; } From patchwork Fri Jan 26 23:13:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wood X-Patchwork-Id: 192852 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2395:b0:106:343:edcb with SMTP id gw21csp205729dyb; Fri, 26 Jan 2024 15:16:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IGIdjn/zpvqhoLNujUFMmSwRH+wiGpvYxmqy91xrKJCMKkDvZAxZinK2whs3HL0fa4GTH49 X-Received: by 2002:a9d:4d05:0:b0:6e1:84d:9346 with SMTP id n5-20020a9d4d05000000b006e1084d9346mr519086otf.62.1706311006611; Fri, 26 Jan 2024 15:16:46 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706311006; cv=pass; d=google.com; s=arc-20160816; b=mJ9lfYSC3aEq4qCDCb82Ssja84L2pVK2clYLXdXo89NBC4HvghcnHXVwWzJnXQLSLY cCOPgMFvgsPpTib684Vkvk47ubyOwTA9xv8R+bTDaLPaKb1naFkq99CS9KqrO6x+a80n oeiZxNWZbjTAMW+VDjyLf4DDjdulIriCLzYWqL1kxOVFxRVgTW70z1K/6vq1fJrhZ7qD SFUVUl8zS3I4IK0HdR+KtpApI3ChkjPOgR2k9YmzYkbw2FHJY7WZqI9rs7wjnl/Wsk1c SNyoXD42/sX9efiSrK3FeaNpVarVJiECsHlYVq59pnvWEABFBw3A9hbrKGdOmkAngEvT +9nQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=HGFbx+2eRIKYYfw924Gczlw/lLoyAbfAHs5r+gBC2OQ=; fh=+EB6oBnXtBrxaPMIm1rb1kOyvjkddCLSgL4/UeSWQvM=; b=vq2YY6l4JJJ/+wR+2SCHLM9GwCFo1JMYh7n40Sm3fKPb/z+V1EfHrquDot7F2lqSf2 LzhOHEga927WTDC3lAifbRbEWnTzGx5IkFS3S6b/00QykncZNjmg/UrAPtTMfS/nRn0/ 9xBwP8ZnY+NXHXer877HWR6ARLakdx4J4y+MpcsWhbi2YWyx52zBZEFmQjHlxUCmZU4X EiTP3KG73D9OD1o+1hRXHJxdm1GYs4uYUm4yHypYcwSbO0tMm9OGfLFXYBz9Oku1zmIB aU72KBHZpHAyn0MxNONCOVK54ITLPAmoj12ff4SKY4lnNtXVoVmIIKfGnj4Uk08Niikk MKuQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=lyL9QUuj; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40815-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40815-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id kl25-20020a056214519900b0067f760ed499si2262547qvb.339.2024.01.26.15.16.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:16:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-40815-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=lyL9QUuj; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-40815-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-40815-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 656741C20E70 for ; Fri, 26 Jan 2024 23:16:46 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DD4E56025F; Fri, 26 Jan 2024 23:14:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lyL9QUuj" Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 A47915EE62; Fri, 26 Jan 2024 23:14:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310852; cv=none; b=h+WIWPkyKNIh8F4Sl0nleBlIHLmxhlZkQ/0B0y5UZm4lV64a2WN0zAdS3V9X294AYxCzh+VLn81dTtgK8Nt7PNuN8XACo3XtaEHheyWvivc1vOH7JsOpTvKiaRk2lNMEMqmeMgBtPOPMFAiJvZr7BfvQj7aEMKO+QIeW6QKNtpk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706310852; c=relaxed/simple; bh=gcaCmv31jC9+dLD+970bShIol4o9Uq98lPUTwZv23Io=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QCVEcRdao61FouO2YflVBkvhs7Qv+Pk1s0zVO9yG37C53iTkBoohgLG6COT+dgKRED9QkFJa9/gVSJ64Uabp0puyg7SpMydQF8AnTWsp7pk0HpICDRC+RvES5PonIJCq0jU8xIrKpAPEEx80Klm8RPfgGnlzy0f8fHvTXkUdVP8= 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=lyL9QUuj; arc=none smtp.client-ip=209.85.214.177 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 Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-1d711d7a940so8358445ad.1; Fri, 26 Jan 2024 15:14:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706310850; x=1706915650; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HGFbx+2eRIKYYfw924Gczlw/lLoyAbfAHs5r+gBC2OQ=; b=lyL9QUujNxrLi9UaunMf2pKmy8U+0UUvFUa5ln/NBtl7X+3CGsdlmFn0itJdggZZZY cGAGL8ptlySTZhABfHwtQ3DsaQeR2o+109KivhV/PMhpO6dRztNWjACB/RDNHLrQ/gqI ruA0PNX6aSN7uZTREClqwBYwh0e2VxQp/ZF23JVJ8J1QO5k2mE+3Yc+XjHRPEavSn7zA /Jubir2MHSP0RvmHiIUvbuHxFFzR7IJYNpwPH6kvJDZJ160nHej69Gb+zLSqpO7B/cr6 o49w18gU0v7eQnXTjqo+opPncKHLyPqxiHggyoS+QRznfKiFb+GaNcXIOHDM0K7Yu6gF 42pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706310850; x=1706915650; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HGFbx+2eRIKYYfw924Gczlw/lLoyAbfAHs5r+gBC2OQ=; b=fdt1OclPrUsNBP6VTBVOSqC86YA9wmq/Mk2YUVt+cCJmUxX1PDKzabhziIYlDABZBo eYg3FZducMNrmBfOdvOg6Dpcyx+tDjmlEt5Q8qyxIDwHSmBlb4jteKiUCLF3tmpn3X0u 4oHYzV98lnVBk5LxuvYVfo2k+OblqTmlRODtK65ykCWodmsLVTLSkMXkJHUaRTbn9ZMX LK2f8zi6NkhYv8i5UdAus8d/E+U0GHXsaQJaSJd6vl1MNQ1oSoLGGICESVtqVX0n9xct 0+jD3YolJupN9N5+XozP6cdvqjKVJ0D7B4Bd5CmjuIVAvSMQ8g1oJNglexmKXZOhF/2D veSQ== X-Gm-Message-State: AOJu0YxF7PR/oxS5itdtt4xg3CvBmsPQnBTp4MJ0PWaEC+SOTGbioecz IURv3MWbyDy1YploNmhRr9l7Wsr5BVp9EJAm3RAchotnMwC0dI5k X-Received: by 2002:a17:902:ce83:b0:1d6:f87f:7627 with SMTP id f3-20020a170902ce8300b001d6f87f7627mr672487plg.130.1706310850069; Fri, 26 Jan 2024 15:14:10 -0800 (PST) Received: from localhost ([2601:644:9380:8cd0::7fb4]) by smtp.gmail.com with ESMTPSA id md8-20020a17090b23c800b002933c85eb64sm1659421pjb.53.2024.01.26.15.14.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 15:14:09 -0800 (PST) From: Matthew Wood To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: leitao@debian.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 8/8] net: netconsole: append userdata to fragmented netconsole messages Date: Fri, 26 Jan 2024 15:13:43 -0800 Message-ID: <20240126231348.281600-9-thepacketgeek@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240126231348.281600-1-thepacketgeek@gmail.com> References: <20240126231348.281600-1-thepacketgeek@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789196769686040995 X-GMAIL-MSGID: 1789196769686040995 Regardless of whether the original message body or formatted userdata exceeds the MAX_PRINT_CHUNK, append userdata to the netconsole message starting with the first chunk that has available space after writing the body. Co-developed-by: Breno Leitao Signed-off-by: Breno Leitao Signed-off-by: Matthew Wood --- drivers/net/netconsole.c | 50 +++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index de668a0794b1..b33ceb110434 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -1086,24 +1086,48 @@ static void send_ext_msg_udp(struct netconsole_target *nt, const char *msg, memcpy(buf + release_len, header, header_len); header_len += release_len; - while (offset < body_len) { + while (offset < body_len + userdata_len) { int this_header = header_len; - int this_chunk; + int this_offset = 0; + int this_chunk = 0; this_header += scnprintf(buf + this_header, sizeof(buf) - this_header, - ",ncfrag=%d/%d;", offset, body_len); - - this_chunk = min(body_len - offset, - MAX_PRINT_CHUNK - this_header); - if (WARN_ON_ONCE(this_chunk <= 0)) - return; - - memcpy(buf + this_header, body + offset, this_chunk); - - netpoll_send_udp(&nt->np, buf, this_header + this_chunk); + ",ncfrag=%d/%d;", offset, + body_len + userdata_len); + + /* Not all body data has been written yet */ + if (offset < body_len) { + this_chunk = min(body_len - offset, + MAX_PRINT_CHUNK - this_header); + if (WARN_ON_ONCE(this_chunk <= 0)) + return; + memcpy(buf + this_header, body + offset, this_chunk); + this_offset += this_chunk; + } + /* Body is fully written and there is pending userdata to write, + * append userdata in this chunk + */ + if (offset + this_offset >= body_len && + offset + this_offset < userdata_len + body_len) { + int sent_userdata = (offset + this_offset) - body_len; + int preceding_bytes = this_chunk + this_header; + + if (WARN_ON_ONCE(sent_userdata < 0)) + return; + + this_chunk = min(userdata_len - sent_userdata, + MAX_PRINT_CHUNK - preceding_bytes); + if (WARN_ON_ONCE(this_chunk <= 0)) + return; + memcpy(buf + this_header + this_offset, + userdata + sent_userdata, + this_chunk); + this_offset += this_chunk; + } - offset += this_chunk; + netpoll_send_udp(&nt->np, buf, this_header + this_offset); + offset += this_offset; } }