From nobody Mon Feb 9 18:03:36 2026 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (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 6FB6585C6A for ; Tue, 5 Mar 2024 13:16:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709644573; cv=none; b=n3pnsXm+MLwJEGFg1OoRjqcCTlCCooCJf1eEvu92sOOQ3jjYQx0+HxhDCxSyS8RhSYc74qoQKwDviyQC5pNSq7YlkO8J2fAqTPjyg3aff8pNa67JYBgXB+HcrXXs/sSDQhpKgghP33DXmsTCnYlUK2HdvjiGopUkVnlZPVmZg6E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709644573; c=relaxed/simple; bh=N127LXZt4grt1w/gMcszgp3Y6dKY6UU9hI85A/v/RiU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pJBAhapuLa2eG/ToG7VUUdoREDzTUqbV1wcyujwxee1hutmKbcydakyMYh8Ci5KQPd0X2KzFB52PhCIZSQUHnUAftYDN82CInJOw6tS8grfccFEIjudp1YXtiBDZZVsOK8ahRJ3/O9CGJlh17bkbCSxBHwdc1ddYuyn5ZNcTIR8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=marliere.net; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=marliere.net header.i=@marliere.net header.b=cKFrfHDg; arc=none smtp.client-ip=209.85.210.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=marliere.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=marliere.net header.i=@marliere.net header.b="cKFrfHDg" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-6e6419cd4ddso341414b3a.2 for ; Tue, 05 Mar 2024 05:16:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709644571; x=1710249371; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:dkim-signature:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=09m5+SBfJc6gX7T4nbwPoMZXriAQEu+6FlQsl0sanWI=; b=qh4EfOTmEcISaTfY7eOzZqp6btwLZpLRsbdvTfpYxb2YFiJMWmYQI5g1dHR5wVF3F/ a26tNih83lMmj2+pFZmS7gm4yLipf2UJifqMZ3LJDjHw7A7NMgqiGcCMW2WzXNlfyshk Lpg/Lai6rgDyb4sJ51n2JscWP143zbTPzr37rZ3xCy2W+yq2ZEGVB+3uLu0zPoTVZcOl KuWvMGdh6YJPSw1Esm1oRL1CCctoZ5gQ1Lydd+Wi1XMXb0jwU/haUluRMtmwjkDtIrxM MlTTynYSl4YiWCwmRK3/oGD3iTo4RVMCBfZDYHmwL39X5/lrVC+rE91f0HuB1l59wCJb GPKw== X-Forwarded-Encrypted: i=1; AJvYcCXK3CM8d8Fi4+rNA1GwNzqov+8fSTpNPteaz7lz3+KiOgJ/QOeof/VagPTtuba531b5BMnIpote2CcVWKfmRD3gqKktT/tXbRNkFXNI X-Gm-Message-State: AOJu0YzWzkxDRp8glrUHy3G4ATPMLKhp5GOKVukybW0PLwnOYIduva6l RELo1fZCJjnL2PizMIXQeo/nN0jWyg3hpDGsV2SNKTjYcT4SXpgS X-Google-Smtp-Source: AGHT+IEeC1ChjkRaiz7c+VB8f3cr0pptDOo5y15zzCK+P8Uc/lkjf/BcXyQejrRAR+y/zgOz6btJXQ== X-Received: by 2002:a05:6a20:8f0c:b0:1a1:4cd2:4398 with SMTP id b12-20020a056a208f0c00b001a14cd24398mr1743647pzk.8.1709644570566; Tue, 05 Mar 2024 05:16:10 -0800 (PST) Received: from mail.marliere.net ([24.199.118.162]) by smtp.gmail.com with ESMTPSA id m19-20020aa78a13000000b006e509762bc2sm8948560pfa.26.2024.03.05.05.16.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Mar 2024 05:16:10 -0800 (PST) From: "Ricardo B. Marliere" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marliere.net; s=2024; t=1709644569; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=09m5+SBfJc6gX7T4nbwPoMZXriAQEu+6FlQsl0sanWI=; b=cKFrfHDg4W23mqvrUZ0nGbHiVnX0hmV+shCzba6XDCQjiiMQlkV2J7Ml2bvrvTyUZ65wHv Q0IPP5SxrqylsP49H9OkuHcoRVnzJ9RhPzAWw/8fqW5W8UuteBcYOlmzRfNQvfze7KNmrq ZfTsIotK43wZ38CHui4I6bwK428aEcfKeU7kSh1BJ0ddgAE02P7AlGgtTeDvO0Wtn2xEAb Q3AalaM8mhaDYZZQV8z3Mu8623dr790ndU26llwaFsnxRwFYJ86BBMBUFewPI5nQJRtgeT 8UdfoaS7bgQOdmY+FcH26jXFrE8qLwnOIbLvhoVmbeR+4ydUV9UaMAnyCXzgLQ== Authentication-Results: ORIGINATING; auth=pass smtp.auth=ricardo@marliere.net smtp.mailfrom=ricardo@marliere.net Date: Tue, 05 Mar 2024 10:15:56 -0300 Subject: [PATCH 1/3] nvme: core: constify struct class usage Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240305-class_cleanup-nvme-v1-1-c707fc997774@marliere.net> References: <20240305-class_cleanup-nvme-v1-0-c707fc997774@marliere.net> In-Reply-To: <20240305-class_cleanup-nvme-v1-0-c707fc997774@marliere.net> To: Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg , James Smart , Chaitanya Kulkarni Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , "Ricardo B. Marliere" X-Developer-Signature: v=1; a=openpgp-sha256; l=4952; i=ricardo@marliere.net; h=from:subject:message-id; bh=N127LXZt4grt1w/gMcszgp3Y6dKY6UU9hI85A/v/RiU=; b=owEBbQKS/ZANAwAKAckLinxjhlimAcsmYgBl5xsRAgbkZFHltPBoK7XwGNvlCzRSGVI2XEudk eoKO0P71o2JAjMEAAEKAB0WIQQDCo6eQk7jwGVXh+HJC4p8Y4ZYpgUCZecbEQAKCRDJC4p8Y4ZY psf7D/9xaaHQVVjmQLJ/6qwlPxjZZAPXOIVGYtTc3mGa3fmormjDdsvtxJVYybF5kToAel1CP5/ W9Ri0Gf6QPj/SxaXuwO+LCnm/3uJ2LtWklaYyzeRTbmNzJ80FTh9MntPLp6WsdPh9DBXjot5EuQ E4PC4uOS4TdQfmjW/UcL2CI+vZDajsdKna59Bo6/nTCSeg8Sch4K3Q+13bQHu/C+UXzqeS9yixG Z0vipWjThk8JfnD/mBS6q8OEVF1glL8Bly1iOiY0hY+AjcX5sfPaIGA/uRYPSEiAQzOARm5DRl+ R+L2jnIbv4TzSdDnh4rcgU7HdTLnLxIjoSXT6Vdi8erj4SyIRsydehuEYdjo8mssp6VeTTPnGCI aUK7/l0bd+IPX2dHzjzA1cdmMAAo2G/Jp1oPuaxzlR0xBzny/x+na8akub5vWP1KYk+L257VFwK w1WC4KBJylzDuj2FziuLC6Kvf3HkEkz/PDVV+7jXJwXVtpDMEeAQ24UFdZ6ZQh9P7b9egRux3Lx BgV9iRwFbwMwDK9jYVjgSVLumG9kxSj2JhhqdWBq3x7NxD3o+4MjdLLKdi7oj3GHEw8FF2l0iG5 UxSvnti//gh9MSnzaHvwTx9TwEkwPI/zmuP7Zb3DE91Lu2kLegsWQAbtX4t7tPUjZeKMF0jYtUY oWueNeX8ZVsbpmQ== X-Developer-Key: i=ricardo@marliere.net; a=openpgp; fpr=030A8E9E424EE3C0655787E1C90B8A7C638658A6 Since commit 43a7206b0963 ("driver core: class: make class_register() take a const *"), the driver core allows for struct class to be in read-only memory, so move the structures nvme_class, nvme_subsys_class and nvme_ns_chr_class to be declared at build time placing them into read-only memory, instead of having to be dynamically allocated at boot time. Cc: Greg Kroah-Hartman Suggested-by: Greg Kroah-Hartman Signed-off-by: Ricardo B. Marliere Reviewed-by: Chaitanya Kulkarni Reviewed-by: Christoph Hellwig --- drivers/nvme/host/core.c | 53 +++++++++++++++++++++++++-------------------= ---- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 60537c9224bf..fdddf2b17519 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -114,12 +114,21 @@ static DEFINE_MUTEX(nvme_subsystems_lock); =20 static DEFINE_IDA(nvme_instance_ida); static dev_t nvme_ctrl_base_chr_devt; -static struct class *nvme_class; -static struct class *nvme_subsys_class; +static int nvme_class_uevent(const struct device *dev, struct kobj_uevent_= env *env); +static const struct class nvme_class =3D { + .name =3D "nvme", + .dev_uevent =3D nvme_class_uevent, +}; + +static const struct class nvme_subsys_class =3D { + .name =3D "nvme-subsystem", +}; =20 static DEFINE_IDA(nvme_ns_chr_minor_ida); static dev_t nvme_ns_chr_devt; -static struct class *nvme_ns_chr_class; +static const struct class nvme_ns_chr_class =3D { + .name =3D "nvme-generic", +}; =20 static void nvme_put_subsystem(struct nvme_subsystem *subsys); static void nvme_remove_invalid_namespaces(struct nvme_ctrl *ctrl, @@ -2873,7 +2882,7 @@ static int nvme_init_subsystem(struct nvme_ctrl *ctrl= , struct nvme_id_ctrl *id) subsys->awupf =3D le16_to_cpu(id->awupf); nvme_mpath_default_iopolicy(subsys); =20 - subsys->dev.class =3D nvme_subsys_class; + subsys->dev.class =3D &nvme_subsys_class; subsys->dev.release =3D nvme_release_subsystem; subsys->dev.groups =3D nvme_subsys_attrs_groups; dev_set_name(&subsys->dev, "nvme-subsys%d", ctrl->instance); @@ -3416,7 +3425,7 @@ int nvme_cdev_add(struct cdev *cdev, struct device *c= dev_device, if (minor < 0) return minor; cdev_device->devt =3D MKDEV(MAJOR(nvme_ns_chr_devt), minor); - cdev_device->class =3D nvme_ns_chr_class; + cdev_device->class =3D &nvme_ns_chr_class; cdev_device->release =3D nvme_cdev_rel; device_initialize(cdev_device); cdev_init(cdev, fops); @@ -4609,7 +4618,7 @@ int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct dev= ice *dev, ctrl->device =3D &ctrl->ctrl_device; ctrl->device->devt =3D MKDEV(MAJOR(nvme_ctrl_base_chr_devt), ctrl->instance); - ctrl->device->class =3D nvme_class; + ctrl->device->class =3D &nvme_class; ctrl->device->parent =3D ctrl->dev; if (ops->dev_attr_groups) ctrl->device->groups =3D ops->dev_attr_groups; @@ -4842,42 +4851,36 @@ static int __init nvme_core_init(void) if (result < 0) goto destroy_delete_wq; =20 - nvme_class =3D class_create("nvme"); - if (IS_ERR(nvme_class)) { - result =3D PTR_ERR(nvme_class); + result =3D class_register(&nvme_class); + if (result) goto unregister_chrdev; - } - nvme_class->dev_uevent =3D nvme_class_uevent; =20 - nvme_subsys_class =3D class_create("nvme-subsystem"); - if (IS_ERR(nvme_subsys_class)) { - result =3D PTR_ERR(nvme_subsys_class); + result =3D class_register(&nvme_subsys_class); + if (result) goto destroy_class; - } =20 result =3D alloc_chrdev_region(&nvme_ns_chr_devt, 0, NVME_MINORS, "nvme-generic"); if (result < 0) goto destroy_subsys_class; =20 - nvme_ns_chr_class =3D class_create("nvme-generic"); - if (IS_ERR(nvme_ns_chr_class)) { - result =3D PTR_ERR(nvme_ns_chr_class); + result =3D class_register(&nvme_ns_chr_class); + if (result) goto unregister_generic_ns; - } + result =3D nvme_init_auth(); if (result) goto destroy_ns_chr; return 0; =20 destroy_ns_chr: - class_destroy(nvme_ns_chr_class); + class_unregister(&nvme_ns_chr_class); unregister_generic_ns: unregister_chrdev_region(nvme_ns_chr_devt, NVME_MINORS); destroy_subsys_class: - class_destroy(nvme_subsys_class); + class_unregister(&nvme_subsys_class); destroy_class: - class_destroy(nvme_class); + class_unregister(&nvme_class); unregister_chrdev: unregister_chrdev_region(nvme_ctrl_base_chr_devt, NVME_MINORS); destroy_delete_wq: @@ -4893,9 +4896,9 @@ static int __init nvme_core_init(void) static void __exit nvme_core_exit(void) { nvme_exit_auth(); - class_destroy(nvme_ns_chr_class); - class_destroy(nvme_subsys_class); - class_destroy(nvme_class); + class_unregister(&nvme_ns_chr_class); + class_unregister(&nvme_subsys_class); + class_unregister(&nvme_class); unregister_chrdev_region(nvme_ns_chr_devt, NVME_MINORS); unregister_chrdev_region(nvme_ctrl_base_chr_devt, NVME_MINORS); destroy_workqueue(nvme_delete_wq); --=20 2.43.0 From nobody Mon Feb 9 18:03:36 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 BEF6E85954 for ; Tue, 5 Mar 2024 13:16:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709644576; cv=none; b=RmyhFSAhKpfM/bjAwGOy/J3iRy+ca0TnzOluVjvBMVKyigRfpsS3H7mFJoIrGXQyz0sV/iOFubHhBZ11t1tiBzzCmCmOERwZtH2M5HOZU31LdLUGoCmtsA+mK4twRvDQJ5nxwmBno3o2vUz1ywH87syVDXoSTF35eje4aVjS85s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709644576; c=relaxed/simple; bh=+dZdFqYSeTBhHCI/BvnkTnL3SyFJABSSpjeS4o55OME=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bbDks8RCf9B7Xsbv3Gg2dbTVQkJeH6lnX5HQ8M4QKMTLkGXbN5Fay3mjWHjpWO78smjwX41hwxKpV8QgEcMcWs5GQYmDTzOnJ+k7HOQ7ZJJWrw0Kx4593W9+n8O5g3uwsknV6hF/l68Tr0pam7pK6j10EfKvQ9+WvUWcCDzSphc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=marliere.net; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=marliere.net header.i=@marliere.net header.b=qwGPOhIu; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=marliere.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=marliere.net header.i=@marliere.net header.b="qwGPOhIu" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-1dcab44747bso46247515ad.1 for ; Tue, 05 Mar 2024 05:16:14 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709644574; x=1710249374; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:dkim-signature:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=gadEZlo5HX6ZvCpKvvvFLxpx/LQrgu8T3YbMhZTBo7E=; b=VMHN2nKWqXVLwFFqSrqgP1iCeE9J5aKLK9Hfiz+A2o42351fNOMm0h/9FOYF4NrUZS eQBTI+k9RWCoaoN0MQNgnF35QyPcwhhonNB8rWnDnYZ9bfH5qMCNeK0gh41zOXWJBhF3 5gnXsS4VtJID0YeRWNAZfy9cn6oAJ096z8K7lVO+EUzZ8w+fTDkLtKlE0FOUFTKn5MqD MhL4Oroa094cmoxhcdLEKCjudKphznAaaBexcY9ZiPpMHP9R+VUILSdkvpJEwZgkpzA9 IgsufUU8+fsv11SOTj3Zv7pet7Jmg4v9LhNHFgbHwoAOqOxMzLfaDenOfSzgc4sbrB30 M60g== X-Forwarded-Encrypted: i=1; AJvYcCUqCkJ3VI6vpb1iSMQ/yOxd9O1c0sJEo+7boOxPHR9tZpMafWRv293ANrm4TeIEOA8A0oMyYfXxCv13vNWmhLVfZt6qtCfSCNZcX7e8 X-Gm-Message-State: AOJu0Yw44O4A0du+WvIgQNnLFUp/K+P5xapDBj6gfSC2hvZ3afiYvk2u 827n41T5tJYYTCA9vpYJkkGstvLDuL/JWPnOn4gZP/8qCGemnsOf X-Google-Smtp-Source: AGHT+IFxlioFA+0snm0cpY62UqyNrvze7kGIh/a9o4bx+H+50s4b27RXJpgKgrdJBQz1ek0gYH4x2w== X-Received: by 2002:a17:902:e74b:b0:1da:22d9:e7fd with SMTP id p11-20020a170902e74b00b001da22d9e7fdmr1972561plf.20.1709644574032; Tue, 05 Mar 2024 05:16:14 -0800 (PST) Received: from mail.marliere.net ([24.199.118.162]) by smtp.gmail.com with ESMTPSA id l15-20020a170902f68f00b001dc96b19616sm10493335plg.66.2024.03.05.05.16.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Mar 2024 05:16:13 -0800 (PST) From: "Ricardo B. Marliere" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marliere.net; s=2024; t=1709644572; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gadEZlo5HX6ZvCpKvvvFLxpx/LQrgu8T3YbMhZTBo7E=; b=qwGPOhIu1JrBU+Ku4MfcnysPIzAdIiHZA4ojvs5dgJoNaxxRzWfO0isA4s23FJ2AvErtvL uMhE6ciJtGgSJaUpjJmegQIqKOMWpsa3Ig4dthh+kNATuAPUly6Pf0xMssF83j4w95mHk2 hdpNwolcz+WnZW3dnZwP8AQxczG8LM00nspFDceybthbEd6XloCup/DnGYhglIB85oIJMN AlX2O54usTDfubIpGeSVQB51ZY8yMIxwEO1/bKdCD+6TfjHKJSXHy/i17GPLBQJbClMv6/ mpsR89ucZhVRjY6+F0xvC9CDjfnnTmh2OcjncrKSYpzBnYo3UowfWvMXyVdfHg== Authentication-Results: ORIGINATING; auth=pass smtp.auth=ricardo@marliere.net smtp.mailfrom=ricardo@marliere.net Date: Tue, 05 Mar 2024 10:15:57 -0300 Subject: [PATCH 2/3] nvme: fabrics: make nvmf_class constant Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240305-class_cleanup-nvme-v1-2-c707fc997774@marliere.net> References: <20240305-class_cleanup-nvme-v1-0-c707fc997774@marliere.net> In-Reply-To: <20240305-class_cleanup-nvme-v1-0-c707fc997774@marliere.net> To: Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg , James Smart , Chaitanya Kulkarni Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , "Ricardo B. Marliere" X-Developer-Signature: v=1; a=openpgp-sha256; l=2439; i=ricardo@marliere.net; h=from:subject:message-id; bh=+dZdFqYSeTBhHCI/BvnkTnL3SyFJABSSpjeS4o55OME=; b=owEBbQKS/ZANAwAKAckLinxjhlimAcsmYgBl5xsRk7shI3nEmZOyWDcbHBkqIDALjOp8rSwRS PW9luUHba6JAjMEAAEKAB0WIQQDCo6eQk7jwGVXh+HJC4p8Y4ZYpgUCZecbEQAKCRDJC4p8Y4ZY pokLEAChkBvAmbdjHqdx0mLrG/G/zqnAQyWG16mp9+F/bfOltpDc+KHT6w8q9AlAcWuDi+A0quH Aqb8pXZ1LLW2ljEQ79Uyc2GUZ1RBY+POjejYCmNW5B2yqFb07gbpV4hTbAwIiCIe1CvhiV4BdUt hyZDu0RypQUJKvMmF3yq6KpWnJkHzxJja2OEYWtLg0w+ekav60KkFSiC2AT/hg71jd+LWnYlXAc MUxDRpSjUSwsnUSG8yg/CVdHpxTg4ICOEb2oqEH7vFLUGLK3VkaAUWrxs1pmFVqnCqnJswhWjXT u78DPjsdkeJY2INFFkYoJVsxYgKZjgY2S0ja7YBY/j7ynwpMJE95fU91qgFgtFRpble9PmOtNqH +veGO4HF8hR8Hz+IpCiNQshdJEpb0jCuih1Adnwu3n/3VPDUsUHMfGULc961qqkhGcEws92j9OT B0K5wiox5D5bvBtKGYhUMOFnftMYvB6D0gC/4rYtzlZYb2eKhm6Z2jB4rK5dzL0FfGPAh2R1n6Q Nof4Oyx5x2CNKa0TppQ7zY4GYed6Ltf9tDnNrbgAwT1ZLekAAocUIYQL2UgzYXr3hCmTnlP/xHt d0jhQaiSufymo8Xf7iQJODbUl6YuyeHRQS+Vy48BC2xPqwOhU3JRn8RRwjrmlNZClBpErCZvF8o 8Ad9eeLbDqms8Eg== X-Developer-Key: i=ricardo@marliere.net; a=openpgp; fpr=030A8E9E424EE3C0655787E1C90B8A7C638658A6 Since commit 43a7206b0963 ("driver core: class: make class_register() take a const *"), the driver core allows for struct class to be in read-only memory, so move the nvmf_class structure to be declared at build time placing it into read-only memory, instead of having to be dynamically allocated at boot time. Cc: Greg Kroah-Hartman Suggested-by: Greg Kroah-Hartman Signed-off-by: Ricardo B. Marliere Reviewed-by: Chaitanya Kulkarni Reviewed-by: Christoph Hellwig --- drivers/nvme/host/fabrics.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c index 3499acbf6a82..94e0911c43bc 100644 --- a/drivers/nvme/host/fabrics.c +++ b/drivers/nvme/host/fabrics.c @@ -1318,7 +1318,10 @@ nvmf_create_ctrl(struct device *dev, const char *buf) return ERR_PTR(ret); } =20 -static struct class *nvmf_class; +static const struct class nvmf_class =3D { + .name =3D "nvme-fabrics", +}; + static struct device *nvmf_device; static DEFINE_MUTEX(nvmf_dev_mutex); =20 @@ -1438,15 +1441,14 @@ static int __init nvmf_init(void) if (!nvmf_default_host) return -ENOMEM; =20 - nvmf_class =3D class_create("nvme-fabrics"); - if (IS_ERR(nvmf_class)) { + ret =3D class_register(&nvmf_class); + if (ret) { pr_err("couldn't register class nvme-fabrics\n"); - ret =3D PTR_ERR(nvmf_class); goto out_free_host; } =20 nvmf_device =3D - device_create(nvmf_class, NULL, MKDEV(0, 0), NULL, "ctl"); + device_create(&nvmf_class, NULL, MKDEV(0, 0), NULL, "ctl"); if (IS_ERR(nvmf_device)) { pr_err("couldn't create nvme-fabrics device!\n"); ret =3D PTR_ERR(nvmf_device); @@ -1462,9 +1464,9 @@ static int __init nvmf_init(void) return 0; =20 out_destroy_device: - device_destroy(nvmf_class, MKDEV(0, 0)); + device_destroy(&nvmf_class, MKDEV(0, 0)); out_destroy_class: - class_destroy(nvmf_class); + class_unregister(&nvmf_class); out_free_host: nvmf_host_put(nvmf_default_host); return ret; @@ -1473,8 +1475,8 @@ static int __init nvmf_init(void) static void __exit nvmf_exit(void) { misc_deregister(&nvmf_misc); - device_destroy(nvmf_class, MKDEV(0, 0)); - class_destroy(nvmf_class); + device_destroy(&nvmf_class, MKDEV(0, 0)); + class_unregister(&nvmf_class); nvmf_host_put(nvmf_default_host); =20 BUILD_BUG_ON(sizeof(struct nvmf_common_command) !=3D 64); --=20 2.43.0 From nobody Mon Feb 9 18:03:36 2026 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 D76A085C42 for ; Tue, 5 Mar 2024 13:16:17 +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=1709644579; cv=none; b=tqZAjify/jDmOylodb0khD0xY/vt6LmnDpcVjCFbPZW5pOO6v6W1CzHLLgfy3aO/uEAu9uq1Jj3mG/Fj5WNAmwNUXEpQuKQc+mHa8GFn/VA0jkaQoe3Mxtu3rEVHme8/rVpizGUoPtujmM6bUMd8GHXz15LZfyGyJTQsB6BGhFA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709644579; c=relaxed/simple; bh=dhrwlnVq2theRONa+InVWSZTMPvREYNEiPaTBGSHGGM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a8nb+bJCt0eJzDu8TqqALJLfkxCBHzADwkxsJSG6aE0uL3y97ImoP9rdqaXL44zEg7M+pHUef2gczU2HlQ7hWN+c8YGRfy5O/1ZPUYqtPvP4b2LeZgSudUJSxKOq7Tdir5wcracvHWBEUFsVviUJZhRFn59ZzWcWcx1AEmZQNdQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=marliere.net; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=marliere.net header.i=@marliere.net header.b=rTsvBQq9; arc=none smtp.client-ip=209.85.214.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=marliere.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=marliere.net header.i=@marliere.net header.b="rTsvBQq9" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-1dd10ae77d8so17181845ad.0 for ; Tue, 05 Mar 2024 05:16:17 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709644577; x=1710249377; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:dkim-signature:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=bqt+8cktK+V8idZwjIDNU1rO/elSFQ6X7CURi/kzXvg=; b=vvk2vcSQh/nNTJey3P9ykav7yGjrHUKjNIcaaNACcWca/dhzkURteQqLysNwvmIvtN CNS1Qqlr6P7vn5a98KJbc0IKHlYqPNxvH6ARCzWRg84cd1K5jHnUNEgbrNf9+MSeOLyE gYGGfVckfGqB++koJEFX3uTYTcIq6BfgFPGcoh8piHGaq/TZbwEGBvW638LGu1sylSOG Z6QP4DgA/htU+Jv9GkRgJH9nGl9VxMJmWn77QUbD5YUm4GUFtO8c7wYleUe24D/N2eYS 8HBxIvm3bNGFGYJc+nMTh3RtFP5mOq0sC37CYHlHotkFbTu0cmQcKPJsQ6xRqZytIzRU DFJw== X-Forwarded-Encrypted: i=1; AJvYcCVbg9qyGl+bi/eXxWGFF5DksQVeVIPhERnHxsddP0zAq5URea+xehufUBi5j4U5+HZClsrrtR+yg+NTTXJqs1gC8Yo5xsnut9jFJezM X-Gm-Message-State: AOJu0YyBjGbXEUHtQQklLMFT1OXPt4nlzQMvPiyJwLdNocC8brtKdeeB U3wPkXQ7JS3YB6obdHS6FE7c0hOUS2rdXaxehuNbt50m/OKQJrYC X-Google-Smtp-Source: AGHT+IG9CQ/TOywUL0lRZw8A45CBzTLMi8LoTwLkUWMwPnBC6g9eldfxFCnZ7t4YOlOhH9FiQJOjqQ== X-Received: by 2002:a17:903:1249:b0:1db:4419:e925 with SMTP id u9-20020a170903124900b001db4419e925mr2003858plh.1.1709644577073; Tue, 05 Mar 2024 05:16:17 -0800 (PST) Received: from mail.marliere.net ([24.199.118.162]) by smtp.gmail.com with ESMTPSA id u2-20020a170902e80200b001dca813b07csm10502348plg.62.2024.03.05.05.16.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Mar 2024 05:16:16 -0800 (PST) From: "Ricardo B. Marliere" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marliere.net; s=2024; t=1709644575; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bqt+8cktK+V8idZwjIDNU1rO/elSFQ6X7CURi/kzXvg=; b=rTsvBQq9uE6VWvj5xypr/90eZoYr/nFmabxffrvmshWjFc8ehvdkQhf+deH2N0rozSXbZW w27TUHwR49lidBoYAvii5CSaYjN8uyXDYcCwXNMCW5r3W3FmQ9xSGwSGG5CjNOcYT6o+qt G8t9iuyTjkT6ZUNQNEnIQuw0NFUMCEW4d68AvpEFleB44jEuKPrhoGVgV/w+o7LAH1ukvA CsSi1U+Xlspo2E5TBrgjTUTPiL08HFyAzZN4FxHFy4hDrbvMjLQ1ajF/WsipIoY7NiGMa9 ZyoPqbLmsXdnv7PvO/5QaSV9QkJmx5ohTYsbWlSEU3oaHpGo+dOCF61i33QtOg== Authentication-Results: ORIGINATING; auth=pass smtp.auth=ricardo@marliere.net smtp.mailfrom=ricardo@marliere.net Date: Tue, 05 Mar 2024 10:15:58 -0300 Subject: [PATCH 3/3] nvme: fcloop: make fcloop_class constant Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240305-class_cleanup-nvme-v1-3-c707fc997774@marliere.net> References: <20240305-class_cleanup-nvme-v1-0-c707fc997774@marliere.net> In-Reply-To: <20240305-class_cleanup-nvme-v1-0-c707fc997774@marliere.net> To: Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg , James Smart , Chaitanya Kulkarni Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , "Ricardo B. Marliere" X-Developer-Signature: v=1; a=openpgp-sha256; l=2109; i=ricardo@marliere.net; h=from:subject:message-id; bh=dhrwlnVq2theRONa+InVWSZTMPvREYNEiPaTBGSHGGM=; b=owEBbQKS/ZANAwAKAckLinxjhlimAcsmYgBl5xsRXt2+dITQnRqAEy1FoOdCoRSxRNbVfJPrz CQVOd6gJjuJAjMEAAEKAB0WIQQDCo6eQk7jwGVXh+HJC4p8Y4ZYpgUCZecbEQAKCRDJC4p8Y4ZY poQ+EAC1E0hCOgTum9T66zK+bF1h7DVrDRQqDcefQv/xbPQa/qn1ho/7PMqlVqH9EI2Ns09s85t qYZbHDCbGNlFF99xy7Gr5WrmJ/+f+UmuIQjGIj35ZZDWaG1SQ8L7EG23TJnxnLELbN74tGkY8W4 25cHoAaTo4KRYqMZ7IR0eX8ftfzjhp51yzzpEjLF2jwcO8RqryhEg329LkMNXEIpdf11GPO+6ac YZ2zwboPONSN3L2SzmhueKnPExWkGBleZY0m7NE5PyaVFNycui4V5jIrmPw5zwGQO7LAz3jVD0v 7qYBokatdGrF/K7hPJ4E1bYWjYYi53Q51lRX4MwXl1hDlszzRx0OhVLz6mFhP7LVVfnZ5N3mk7Z QbhAzra4F/8V/RiAjAOzzofKtgN/3OSehe8sHFPnSvT2NDERYtmG/8N6Ij+BoXucesN0L6a94a4 UoeVhXjelNf/BTzjqmHCz03hf+CewLXh9T2loEE3NbS/ngxbbY9DGfNe3KYst0FGXpvjesZH2P/ mZr7vnqov4m4jHUuv2ffl7s3uyUXAA77wwFBgDaxUrsgXr4xGee71thj9amwPPMyAqfQ+P34tPE bu9zUEQW65CD5QbiS2qwYd3ig0zxQFNxvTwahoYZMNNNbdvweZ8isOAmn2Lrz/pACbh20vEAXuU eJ3SkhzQmeXvccQ== X-Developer-Key: i=ricardo@marliere.net; a=openpgp; fpr=030A8E9E424EE3C0655787E1C90B8A7C638658A6 Since commit 43a7206b0963 ("driver core: class: make class_register() take a const *"), the driver core allows for struct class to be in read-only memory, so move the fcloop_class structure to be declared at build time placing it into read-only memory, instead of having to be dynamically allocated at boot time. Cc: Greg Kroah-Hartman Suggested-by: Greg Kroah-Hartman Signed-off-by: Ricardo B. Marliere Reviewed-by: Chaitanya Kulkarni Reviewed-by: Christoph Hellwig --- drivers/nvme/target/fcloop.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/nvme/target/fcloop.c b/drivers/nvme/target/fcloop.c index 1471af250ea6..913cd2ec7a6f 100644 --- a/drivers/nvme/target/fcloop.c +++ b/drivers/nvme/target/fcloop.c @@ -1556,7 +1556,9 @@ static const struct attribute_group *fcloop_dev_attr_= groups[] =3D { NULL, }; =20 -static struct class *fcloop_class; +static const struct class fcloop_class =3D { + .name =3D "fcloop", +}; static struct device *fcloop_device; =20 =20 @@ -1564,15 +1566,14 @@ static int __init fcloop_init(void) { int ret; =20 - fcloop_class =3D class_create("fcloop"); - if (IS_ERR(fcloop_class)) { + ret =3D class_register(&fcloop_class); + if (ret) { pr_err("couldn't register class fcloop\n"); - ret =3D PTR_ERR(fcloop_class); return ret; } =20 fcloop_device =3D device_create_with_groups( - fcloop_class, NULL, MKDEV(0, 0), NULL, + &fcloop_class, NULL, MKDEV(0, 0), NULL, fcloop_dev_attr_groups, "ctl"); if (IS_ERR(fcloop_device)) { pr_err("couldn't create ctl device!\n"); @@ -1585,7 +1586,7 @@ static int __init fcloop_init(void) return 0; =20 out_destroy_class: - class_destroy(fcloop_class); + class_unregister(&fcloop_class); return ret; } =20 @@ -1643,8 +1644,8 @@ static void __exit fcloop_exit(void) =20 put_device(fcloop_device); =20 - device_destroy(fcloop_class, MKDEV(0, 0)); - class_destroy(fcloop_class); + device_destroy(&fcloop_class, MKDEV(0, 0)); + class_unregister(&fcloop_class); } =20 module_init(fcloop_init); --=20 2.43.0