]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: dsa: mv88e6xxx: Constify struct devlink_region_ops and struct mv88e6xxx_region
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 29 Jun 2025 12:35:49 +0000 (14:35 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 2 Jul 2025 02:31:38 +0000 (19:31 -0700)
'struct devlink_region_ops' and 'struct mv88e6xxx_region' are not modified
in this driver.

Constifying these structures moves some data to a read-only section, so
increases overall security, especially when the structure holds some
function pointers.

On a x86_64, with allmodconfig, as an example:
Before:
======
   text    data     bss     dec     hex filename
  18076    6496      64   24636    603c drivers/net/dsa/mv88e6xxx/devlink.o

After:
=====
   text    data     bss     dec     hex filename
  18652    5920      64   24636    603c drivers/net/dsa/mv88e6xxx/devlink.o

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/46040062161dda211580002f950a6d60433243dc.1751200453.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/mv88e6xxx/devlink.c

index 195460a0a0d41805cdb3817c0f163cb3fa2a8d65..aec652e33fc172350722da5f71f5131a9f1aab73 100644 (file)
@@ -647,7 +647,7 @@ static struct mv88e6xxx_region_priv mv88e6xxx_region_global1_priv = {
        .id = MV88E6XXX_REGION_GLOBAL1,
 };
 
-static struct devlink_region_ops mv88e6xxx_region_global1_ops = {
+static const struct devlink_region_ops mv88e6xxx_region_global1_ops = {
        .name = "global1",
        .snapshot = mv88e6xxx_region_global_snapshot,
        .destructor = kfree,
@@ -658,32 +658,32 @@ static struct mv88e6xxx_region_priv mv88e6xxx_region_global2_priv = {
        .id = MV88E6XXX_REGION_GLOBAL2,
 };
 
-static struct devlink_region_ops mv88e6xxx_region_global2_ops = {
+static const struct devlink_region_ops mv88e6xxx_region_global2_ops = {
        .name = "global2",
        .snapshot = mv88e6xxx_region_global_snapshot,
        .destructor = kfree,
        .priv = &mv88e6xxx_region_global2_priv,
 };
 
-static struct devlink_region_ops mv88e6xxx_region_atu_ops = {
+static const struct devlink_region_ops mv88e6xxx_region_atu_ops = {
        .name = "atu",
        .snapshot = mv88e6xxx_region_atu_snapshot,
        .destructor = kfree,
 };
 
-static struct devlink_region_ops mv88e6xxx_region_vtu_ops = {
+static const struct devlink_region_ops mv88e6xxx_region_vtu_ops = {
        .name = "vtu",
        .snapshot = mv88e6xxx_region_vtu_snapshot,
        .destructor = kfree,
 };
 
-static struct devlink_region_ops mv88e6xxx_region_stu_ops = {
+static const struct devlink_region_ops mv88e6xxx_region_stu_ops = {
        .name = "stu",
        .snapshot = mv88e6xxx_region_stu_snapshot,
        .destructor = kfree,
 };
 
-static struct devlink_region_ops mv88e6xxx_region_pvt_ops = {
+static const struct devlink_region_ops mv88e6xxx_region_pvt_ops = {
        .name = "pvt",
        .snapshot = mv88e6xxx_region_pvt_snapshot,
        .destructor = kfree,
@@ -696,13 +696,13 @@ static const struct devlink_port_region_ops mv88e6xxx_region_port_ops = {
 };
 
 struct mv88e6xxx_region {
-       struct devlink_region_ops *ops;
+       const struct devlink_region_ops *ops;
        u64 size;
 
        bool (*cond)(struct mv88e6xxx_chip *chip);
 };
 
-static struct mv88e6xxx_region mv88e6xxx_regions[] = {
+static const struct mv88e6xxx_region mv88e6xxx_regions[] = {
        [MV88E6XXX_REGION_GLOBAL1] = {
                .ops = &mv88e6xxx_region_global1_ops,
                .size = 32 * sizeof(u16)
@@ -768,7 +768,7 @@ int mv88e6xxx_setup_devlink_regions_global(struct dsa_switch *ds)
 {
        bool (*cond)(struct mv88e6xxx_chip *chip);
        struct mv88e6xxx_chip *chip = ds->priv;
-       struct devlink_region_ops *ops;
+       const struct devlink_region_ops *ops;
        struct devlink_region *region;
        u64 size;
        int i, j;