tpm: make all 'class' structures const
Subsystems (2)
PATCH 1/1 tpm: make all 'class' structures const
From: Ivan Orlov <[email protected]>
Now that the driver core allows for struct class to be in read-only memory, making all 'class' structures to be declared at build time placing them into read-only memory, instead of having to be dynamically allocated at load time.
Cc Peter Huewe <[email protected]>
Cc Jarkko Sakkinen <[email protected]>
Cc Jason Gunthorpe <[email protected]>
Suggested-by Greg Kroah-Hartman <[email protected]>
Signed-off-by Ivan Orlov <[email protected]>
Signed-off-by Greg Kroah-Hartman <[email protected]>
--- drivers/char/tpm/tpm-chip.c | 11 ++++++++--- drivers/char/tpm/tpm-interface.c | 21 +++++++++------------ drivers/char/tpm/tpm.h | 4 ++-- drivers/char/tpm/tpm2-space.c | 2 +- 4 files changed, 20 insertions(+), 18 deletions(-)
drivers/char/tpm/tpm-chip.c +8 -3
@@ -28,8 +28,13 @@DEFINE_IDR (dev_nums_idr);static DEFINE_MUTEX (idr_lock); -struct class *tpm_class; -struct class *tpmrm_class; +const struct class tpm_class = { + .name ="tpm" , + .shutdown_pre = tpm_class_shutdown, +}; +const struct class tpmrm_class = { + .name ="tmprm" , +};dev_t tpm_devt;static int tpm_request_locality (struct tpm_chip *chip)
@@ -336,7 +341,7 @@ struct tpm_chip *tpm_chip_alloc(struct device *pdev,device_initialize (&chip->dev); - chip->dev.class = tpm_class; + chip->dev.class = &tpm_class; chip->dev.release = tpm_dev_release; chip->dev.parent = pdev; chip->dev.groups = chip->groups;
drivers/char/tpm/tpm-interface.c +9 -12
@@ -476,18 +476,15 @@ static int __init tpm_init(void) {int rc; - tpm_class =class_create ("tpm" ); -if (IS_ERR (tpm_class)) { + rc =class_register (&tpm_class); +if (rc) {pr_err ("couldn't create tpm class\n" ); -return PTR_ERR (tpm_class); +return rc; } - tpm_class->shutdown_pre = tpm_class_shutdown; - - tpmrm_class =class_create ("tpmrm" ); -if (IS_ERR (tpmrm_class)) { + rc =class_register (&tpmrm_class); +if (rc) {pr_err ("couldn't create tpmrm class\n" ); - rc =PTR_ERR (tpmrm_class); goto out_destroy_tpm_class; }
@@ -508,9 +505,9 @@ static int __init tpm_init(void) out_unreg_chrdev:unregister_chrdev_region (tpm_devt,2 *TPM_NUM_DEVICES ); out_destroy_tpmrm_class: -class_destroy (tpmrm_class); +class_unregister (&tpmrm_class); out_destroy_tpm_class: -class_destroy (tpm_class); +class_unregister (&tpm_class);return rc; }
@@ -518,8 +515,8 @@ static int __init tpm_init(void) static void __exit tpm_exit(void) {idr_destroy (&dev_nums_idr); -class_destroy (tpm_class); -class_destroy (tpmrm_class); +class_unregister (&tpm_class); +class_unregister (&tpmrm_class);unregister_chrdev_region (tpm_devt,2 *TPM_NUM_DEVICES );tpm_dev_common_exit (); }
drivers/char/tpm/tpm.h +2 -2
@@ -230,8 +230,8 @@ enum tpm2_pt_props {* compiler warnings about stack frame size. */ #define TPM_MAX_RNG_DATA 128 -extern struct class *tpm_class; -extern struct class *tpmrm_class; +extern const struct class tpm_class; +extern const struct class tpmrm_class;extern dev_t tpm_devt;extern const struct file_operations tpm_fops;extern const struct file_operations tpmrm_fops;
drivers/char/tpm/tpm2-space.c +1 -1
@@ -606,7 +606,7 @@ int tpm_devs_add(struct tpm_chip *chip)device_initialize (&chip->devs); chip->devs.parent = chip->dev.parent; - chip->devs.class = tpmrm_class; + chip->devs.class = &tpmrm_class;/* * Get extra reference on main device to hold on behalf of devs.
Signature · 1 line
2.41.0
Quoted 131 lines · Greg Kroah-Hartman
From: Ivan Orlov <[email protected]>
Now that the driver core allows for struct class to be in read-only memory, making all 'class' structures to be declared at build time placing them into read-only memory, instead of having to be dynamically allocated at load time.
Cc Peter Huewe <[email protected]>Cc Jarkko Sakkinen <[email protected]>Cc Jason Gunthorpe <[email protected]>Suggested-by Greg Kroah-Hartman <[email protected]>Signed-off-by Ivan Orlov <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- drivers/char/tpm/tpm-chip.c | 11 ++++++++--- drivers/char/tpm/tpm-interface.c | 21 +++++++++------------ drivers/char/tpm/tpm.h | 4 ++-- drivers/char/tpm/tpm2-space.c | 2 +- 4 files changed, 20 insertions(+), 18 deletions(-)drivers/char/tpm/tpm-chip.c +8
-3@@ -28,8 +28,13 @@DEFINE_IDR (dev_nums_idr);static DEFINE_MUTEX (idr_lock); -struct class *tpm_class; -struct class *tpmrm_class; +const struct class tpm_class = { + .name ="tpm" , + .shutdown_pre = tpm_class_shutdown, +}; +const struct class tpmrm_class = { + .name ="tmprm" , +};dev_t tpm_devt;static int tpm_request_locality (struct tpm_chip *chip)@@ -336,7 +341,7 @@ struct tpm_chip *tpm_chip_alloc(struct device *pdev,device_initialize (&chip->dev); - chip->dev.class = tpm_class; + chip->dev.class = &tpm_class; chip->dev.release = tpm_dev_release; chip->dev.parent = pdev; chip->dev.groups = chip->groups;drivers/char/tpm/tpm-interface.c +9
-12@@ -476,18 +476,15 @@ static int __init tpm_init(void) {int rc; - tpm_class =class_create ("tpm" ); -if (IS_ERR (tpm_class)) { + rc =class_register (&tpm_class); +if (rc) {pr_err ("couldn't create tpm class\n" ); -return PTR_ERR (tpm_class); +return rc; } - tpm_class->shutdown_pre = tpm_class_shutdown; - - tpmrm_class =class_create ("tpmrm" ); -if (IS_ERR (tpmrm_class)) { + rc =class_register (&tpmrm_class); +if (rc) {pr_err ("couldn't create tpmrm class\n" ); - rc =PTR_ERR (tpmrm_class); goto out_destroy_tpm_class; }@@ -508,9 +505,9 @@ static int __init tpm_init(void) out_unreg_chrdev:unregister_chrdev_region (tpm_devt,2 *TPM_NUM_DEVICES ); out_destroy_tpmrm_class: -class_destroy (tpmrm_class); +class_unregister (&tpmrm_class); out_destroy_tpm_class: -class_destroy (tpm_class); +class_unregister (&tpm_class);return rc; }@@ -518,8 +515,8 @@ static int __init tpm_init(void) static void __exit tpm_exit(void) {idr_destroy (&dev_nums_idr); -class_destroy (tpm_class); -class_destroy (tpmrm_class); +class_unregister (&tpm_class); +class_unregister (&tpmrm_class);unregister_chrdev_region (tpm_devt,2 *TPM_NUM_DEVICES );tpm_dev_common_exit (); }drivers/char/tpm/tpm.h +2
-2@@ -230,8 +230,8 @@ enum tpm2_pt_props {* compiler warnings about stack frame size. */ #define TPM_MAX_RNG_DATA 128 -extern struct class *tpm_class; -extern struct class *tpmrm_class; +extern const struct class tpm_class; +extern const struct class tpmrm_class;extern dev_t tpm_devt;extern const struct file_operations tpm_fops;extern const struct file_operations tpmrm_fops;drivers/char/tpm/tpm2-space.c +1
-1@@ -606,7 +606,7 @@ int tpm_devs_add(struct tpm_chip *chip)device_initialize (&chip->devs); chip->devs.parent = chip->dev.parent; - chip->devs.class = tpmrm_class; + chip->devs.class = &tpmrm_class;/* * Get extra reference on main device to hold on behalf of devs. Signature · 1 line
2.41.0
Acked-by Jarkko Sakkinen <[email protected]>
BR, Jarkko