]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
auxdisplay: lcd2s: Allocate memory for custom data in charlcd_alloc()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 24 Feb 2025 17:27:39 +0000 (19:27 +0200)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 10 Mar 2025 16:03:02 +0000 (18:03 +0200)
Allocate memory for custom data in charlcd_alloc() instead of doing that
explicitly in the driver.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
drivers/auxdisplay/lcd2s.c

index c71ebb925971b67415089416502ddedba5ce01fa..045dbef49dee472fee2fae8454bd16381576951e 100644 (file)
@@ -298,20 +298,18 @@ static int lcd2s_i2c_probe(struct i2c_client *i2c)
                        I2C_FUNC_SMBUS_WRITE_BLOCK_DATA))
                return -EIO;
 
-       lcd2s = devm_kzalloc(&i2c->dev, sizeof(*lcd2s), GFP_KERNEL);
-       if (!lcd2s)
-               return -ENOMEM;
-
        /* Test, if the display is responding */
        err = lcd2s_i2c_smbus_write_byte(i2c, LCD2S_CMD_DISPLAY_OFF);
        if (err < 0)
                return err;
 
-       lcd = charlcd_alloc(0);
+       lcd = charlcd_alloc(sizeof(*lcd2s));
        if (!lcd)
                return -ENOMEM;
 
-       lcd->drvdata = lcd2s;
+       lcd->ops = &lcd2s_ops;
+
+       lcd2s = lcd->drvdata;
        lcd2s->i2c = i2c;
        lcd2s->charlcd = lcd;
 
@@ -326,8 +324,6 @@ static int lcd2s_i2c_probe(struct i2c_client *i2c)
        if (err)
                goto fail1;
 
-       lcd->ops = &lcd2s_ops;
-
        err = charlcd_register(lcd2s->charlcd);
        if (err)
                goto fail1;