From nobody Tue Feb 10 03:37:23 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E4589C7EE29 for ; Tue, 23 May 2023 12:22:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236823AbjEWMWg (ORCPT ); Tue, 23 May 2023 08:22:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236807AbjEWMWc (ORCPT ); Tue, 23 May 2023 08:22:32 -0400 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB30011F for ; Tue, 23 May 2023 05:22:29 -0700 (PDT) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20230523122228euoutp01fc8b4ee9686bfbdd76dc6d8e56b92ac0~hxTCubOjW1724917249euoutp01Q for ; Tue, 23 May 2023 12:22:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20230523122228euoutp01fc8b4ee9686bfbdd76dc6d8e56b92ac0~hxTCubOjW1724917249euoutp01Q DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1684844548; bh=Gl8w8aYUi8EdP/0mI8ukz2sgnZWD5EFjBiLLXuY7rlY=; h=From:To:CC:Subject:Date:In-Reply-To:References:From; b=vC+fR35q0VfVR8CfpZIrd0FRtKpO9lQxzwdlL5mu67rtwO2UlFBE4CGuLwVoAWCXy y3WeO4MJ8nfyrsywdi98wyPZmVqYxNF0pubgFN2Uv/7RIxXvYGQPkMGACoy/twVRJ0 WoRovUsB8ysc9KJgel+XorhpE9KpDVyhqx63bjCM= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20230523122228eucas1p18d511e1ddb871c6fda4dffb6aa6e195a~hxTCcbvID2697326973eucas1p19; Tue, 23 May 2023 12:22:28 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 40.C8.42423.400BC646; Tue, 23 May 2023 13:22:28 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20230523122227eucas1p2ee83e872a9a3babd1196a286a34e175a~hxTCA79VE0063100631eucas1p2c; Tue, 23 May 2023 12:22:27 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20230523122227eusmtrp2ba996f327f92df18bbe2b4a04a8311de~hxTCABXxt0635006350eusmtrp2k; Tue, 23 May 2023 12:22:27 +0000 (GMT) X-AuditID: cbfec7f2-a3bff7000002a5b7-e2-646cb0042352 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id B6.BF.10549.300BC646; Tue, 23 May 2023 13:22:27 +0100 (BST) Received: from CAMSVWEXC02.scsc.local (unknown [106.1.227.72]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20230523122227eusmtip1cd14341a47651d0a13fc47c80a4eb32a~hxTB0pQ4h1739517395eusmtip1H; Tue, 23 May 2023 12:22:27 +0000 (GMT) Received: from localhost (106.210.248.82) by CAMSVWEXC02.scsc.local (2002:6a01:e348::6a01:e348) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 23 May 2023 13:22:26 +0100 From: Joel Granados To: CC: Christian Brauner , Kees Cook , Joel Granados , , , Iurii Zaikin , Alexander Viro , Sudip Mukherjee Subject: [PATCH v4 2/8] parport: Remove register_sysctl_table from parport_proc_register Date: Tue, 23 May 2023 14:22:14 +0200 Message-ID: <20230523122220.1610825-3-j.granados@samsung.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230523122220.1610825-1-j.granados@samsung.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [106.210.248.82] X-ClientProxiedBy: CAMSVWEXC01.scsc.local (2002:6a01:e347::6a01:e347) To CAMSVWEXC02.scsc.local (2002:6a01:e348::6a01:e348) X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprLKsWRmVeSWpSXmKPExsWy7djPc7osG3JSDGbMZLV4ffgTo8WZ7lyL PXtPslhc3jWHzeLGhKeMFgdOT2G2OP/3OKvFsp1+DhwesxsusnjsnHWX3WPBplKPTas62Tw+ b5Lz2PTkLVMAWxSXTUpqTmZZapG+XQJXRtu2WYwFDZoVO96eZ21gvK3YxcjJISFgIrH/YhNL FyMXh5DACkaJe7PWskE4XxglTk47zwrhfGaUuN87jxWm5dfkj0wQieWMEgePNCJU/fr3kB3C 2cIosbJlMRNIC5uAjsT5N3eYQWwRAXGJE6c3M4IUMQvsZJLo77wFtJGDQ1ggSuJ6QyFIDYuA qsT5Z6/YQGxeAVuJN69+MEKslpdouz4dzOYUsJM49GwfK0SNoMTJmU9YQGxmoJrmrbOZIWwJ iYMvXjBD9CpJrO76wwZh10qc2nIL7AUJgS8cEl9PvWaHSLhIPD12AupPYYlXx7dAxWUk/u+c D9UwmVFi/78P7BDOakaJZY1fmSCqrCVarjyB6nCU2DzrEzvIZxICfBI33gpCXMQnMWnbdGaI MK9ER5vQBEaVWUh+mIXkh1lIfljAyLyKUTy1tDg3PbXYMC+1XK84Mbe4NC9dLzk/dxMjMAWd /nf80w7Gua8+6h1iZOJgPMQowcGsJMJ7ojw7RYg3JbGyKrUoP76oNCe1+BCjNAeLkjivtu3J ZCGB9MSS1OzU1ILUIpgsEwenVANTyNWJqX/9jm597cppcPTTjQzLDwUzba2P6/N0F/z/Xb76 UWb9Q/aVHbn/hWxspn7XY7uyfv9N3Z+zl5x+dGmxf6eKz7qvSkv272i04XiW3/jKvufvz/Zy VyumQLOQm4s1hLJD0tq36dowpn9wKMoVfyMdXHT29JZZl8V3qyr5HK5gvsAhHrl2YvlKz48K H/IecF/04Ly99YHWoTuMlgUpWiGOTKoZE3c1v7Pj9Dndof7c/4T01UOlbukHBWcrtf5inqKW vVbB2OTfh6BMK+9vKxsj3D+0ndjnYlIZFL3XgnP687Mb2e6rXYzPvpzpGCX687jgqnyLhfZN jQVu1d+s3szrNJoptrLul3L3pA1KLMUZiYZazEXFiQDxKSV2sAMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKIsWRmVeSWpSXmKPExsVy+t/xu7rMG3JSDP6dV7N4ffgTo8WZ7lyL PXtPslhc3jWHzeLGhKeMFgdOT2G2OP/3OKvFsp1+DhwesxsusnjsnHWX3WPBplKPTas62Tw+ b5Lz2PTkLVMAW5SeTVF+aUmqQkZ+cYmtUrShhZGeoaWFnpGJpZ6hsXmslZGpkr6dTUpqTmZZ apG+XYJeRtu2WYwFDZoVO96eZ21gvK3YxcjJISFgIvFr8kemLkYuDiGBpYwSN5d+Y4NIyEhs /HKVFcIWlvhzrYsNougjo8SEF/9ZIJwtjBLb27vBqtgEdCTOv7nDDGKLCIhLnDi9mRGkiFlg O5PEhL+7wMYKC0RI/G/4BNbAIqAqcf7ZK7A4r4CtxJtXPxgh1slLtF2fDmZzCthJHHq2D6xe CKim9dUmVoh6QYmTM5+wgNjMQPXNW2czQ9gSEgdfvGCGmKMksbrrD9Q7tRKf/z5jnMAoMgtJ +ywk7bOQtC9gZF7FKJJaWpybnltsqFecmFtcmpeul5yfu4kRGJ/bjv3cvINx3quPeocYmTgY DzFKcDArifCeKM9OEeJNSaysSi3Kjy8qzUktPsRoCvTnRGYp0eR8YILIK4k3NDMwNTQxszQw tTQzVhLn9SzoSBQSSE8sSc1OTS1ILYLpY+LglGpgypQSd37A3LzXMGXiox3NXBxX2/gZdR13 5iy5dP8yd/y5zncacm1HuQ/eFLmxS7HMMtE1L0h6cVvZFj/3iUw/D+eFHFbap2C5OaG6b4q7 12+xA857f7+fWOybkRvibxhR8bHTquytge7mXTzhJRvST9nlGf/LXevbLf9YKTXQvujCw2V7 mgoWyplxyn7geFJ6x0NVQuT0wXsZ3Dbv5URfsx9ue73QUTfFMXLdIZ7ZU32Y9h3zM33+5ACX s960t/eEzTp3lwkZzu3Jfv17j/brRR6bOoWMAmYs3cFgM4GTI9xbpEX3g3bfkkeyFRwMqdse zLYL9555/WXHc552l+igSW8NS0Kb454yBwWwzFZiKc5INNRiLipOBAA7l7JBWAMAAA== X-CMS-MailID: 20230523122227eucas1p2ee83e872a9a3babd1196a286a34e175a X-Msg-Generator: CA X-RootMTR: 20230523122227eucas1p2ee83e872a9a3babd1196a286a34e175a X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20230523122227eucas1p2ee83e872a9a3babd1196a286a34e175a References: <20230523122220.1610825-1-j.granados@samsung.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This is part of the general push to deprecate register_sysctl_paths and register_sysctl_table. Register dev/parport/PORTNAME and dev/parport/PORTNAME/devices. Temporary allocation for name is freed at the end of the function. Remove all the struct elements that are no longer used in the parport_device_sysctl_template struct. Add parport specific defines that hide the base path sizes. To make sure the resulting directory structure did not change we made sure that `find /proc/sys/dev/ | sha1sum` was the same before and after the change. Signed-off-by: Joel Granados Reported-by: kernel test robot Closes: https://lore.kernel.org/r/202305150948.pHgIh7Ql-lkp@intel.com/ Reported-by: Dan Carpenter Closes: https://lore.kernel.org/r/202305150948.pHgIh7Ql-lkp@intel.com/ Reviewed-by: Luis Chamberlain Signed-off-by: Luis Chamberlain --- drivers/parport/procfs.c | 93 ++++++++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 32 deletions(-) diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c index d740eba3c099..28a37e0ef98c 100644 --- a/drivers/parport/procfs.c +++ b/drivers/parport/procfs.c @@ -32,6 +32,13 @@ #define PARPORT_MAX_TIMESLICE_VALUE ((unsigned long) HZ) #define PARPORT_MIN_SPINTIME_VALUE 1 #define PARPORT_MAX_SPINTIME_VALUE 1000 +/* + * PARPORT_BASE_* is the size of the known parts of the sysctl path + * in dev/partport/%s/devices/%s. "dev/parport/"(12), "/devices/"(9 + * and null char(1). + */ +#define PARPORT_BASE_PATH_SIZE 13 +#define PARPORT_BASE_DEVICES_PATH_SIZE 22 =20 static int do_active_device(struct ctl_table *table, int write, void *result, size_t *lenp, loff_t *ppos) @@ -260,9 +267,6 @@ struct parport_sysctl_table { struct ctl_table_header *sysctl_header; struct ctl_table vars[12]; struct ctl_table device_dir[2]; - struct ctl_table port_dir[2]; - struct ctl_table parport_dir[2]; - struct ctl_table dev_dir[2]; }; =20 static const struct parport_sysctl_table parport_sysctl_template =3D { @@ -305,7 +309,6 @@ static const struct parport_sysctl_table parport_sysctl= _template =3D { .mode =3D 0444, .proc_handler =3D do_hardware_modes }, - PARPORT_DEVICES_ROOT_DIR, #ifdef CONFIG_PARPORT_1284 { .procname =3D "autoprobe", @@ -355,18 +358,6 @@ static const struct parport_sysctl_table parport_sysct= l_template =3D { }, {} }, - { - PARPORT_PORT_DIR(NULL), - {} - }, - { - PARPORT_PARPORT_DIR(NULL), - {} - }, - { - PARPORT_DEV_DIR(NULL), - {} - } }; =20 struct parport_device_sysctl_table @@ -473,11 +464,13 @@ parport_default_sysctl_table =3D { } }; =20 - int parport_proc_register(struct parport *port) { struct parport_sysctl_table *t; - int i; + struct ctl_table_header *devices_h; + char *tmp_dir_path; + size_t tmp_path_len, port_name_len; + int bytes_written, i, err =3D 0; =20 t =3D kmemdup(&parport_sysctl_template, sizeof(*t), GFP_KERNEL); if (t =3D=3D NULL) @@ -485,28 +478,64 @@ int parport_proc_register(struct parport *port) =20 t->device_dir[0].extra1 =3D port; =20 - for (i =3D 0; i < 5; i++) - t->vars[i].extra1 =3D port; - t->vars[0].data =3D &port->spintime; - t->vars[5].child =3D t->device_dir; -=09 - for (i =3D 0; i < 5; i++) - t->vars[6 + i].extra2 =3D &port->probe_info[i]; + for (i =3D 0; i < 5; i++) { + t->vars[i].extra1 =3D port; + t->vars[5 + i].extra2 =3D &port->probe_info[i]; + } =20 - t->port_dir[0].procname =3D port->name; + port_name_len =3D strnlen(port->name, PARPORT_NAME_MAX_LEN); + /* + * Allocate a buffer for two paths: dev/parport/PORT and dev/parport/PORT= /devices. + * We calculate for the second as that will give us enough for the first. + */ + tmp_path_len =3D PARPORT_BASE_DEVICES_PATH_SIZE + port_name_len; + tmp_dir_path =3D kzalloc(tmp_path_len, GFP_KERNEL); + if (!tmp_dir_path) { + err =3D -ENOMEM; + goto exit_free_t; + } =20 - t->port_dir[0].child =3D t->vars; - t->parport_dir[0].child =3D t->port_dir; - t->dev_dir[0].child =3D t->parport_dir; + bytes_written =3D snprintf(tmp_dir_path, tmp_path_len, + "dev/parport/%s/devices", port->name); + if (tmp_path_len <=3D bytes_written) { + err =3D -ENOENT; + goto exit_free_tmp_dir_path; + } + devices_h =3D register_sysctl(tmp_dir_path, t->device_dir); + if (devices_h =3D=3D NULL) { + err =3D -ENOENT; + goto exit_free_tmp_dir_path; + } =20 - t->sysctl_header =3D register_sysctl_table(t->dev_dir); + tmp_path_len =3D PARPORT_BASE_PATH_SIZE + port_name_len; + bytes_written =3D snprintf(tmp_dir_path, tmp_path_len, + "dev/parport/%s", port->name); + if (tmp_path_len <=3D bytes_written) { + err =3D -ENOENT; + goto unregister_devices_h; + } + + t->sysctl_header =3D register_sysctl(tmp_dir_path, t->vars); if (t->sysctl_header =3D=3D NULL) { - kfree(t); - t =3D NULL; + err =3D -ENOENT; + goto unregister_devices_h; } + port->sysctl_table =3D t; + + kfree(tmp_dir_path); return 0; + +unregister_devices_h: + unregister_sysctl_table(devices_h); + +exit_free_tmp_dir_path: + kfree(tmp_dir_path); + +exit_free_t: + kfree(t); + return err; } =20 int parport_proc_unregister(struct parport *port) --=20 2.30.2