Skip to content

Commit

Permalink
auxdisplay: lcd2s: Use proper API to free the instance of charlcd object
Browse files Browse the repository at this point in the history
commit 9ed331f upstream.

While it might work, the current approach is fragile in a few ways:
- whenever members in the structure are shuffled, the pointer will be wrong
- the resource freeing may include more than covered by kfree()

Fix this by using charlcd_free() call instead of kfree().

Fixes: 8c9108d ("auxdisplay: add a driver for lcd2s character display")
Cc: Lars Poeschel <poeschel@lemonage.de>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
andy-shev authored and gregkh committed Mar 8, 2022
1 parent 3585ed5 commit 307c637
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/auxdisplay/lcd2s.c
Expand Up @@ -336,7 +336,7 @@ static int lcd2s_i2c_probe(struct i2c_client *i2c,
return 0;

fail1:
kfree(lcd);
charlcd_free(lcd2s->charlcd);
return err;
}

Expand All @@ -345,7 +345,7 @@ static int lcd2s_i2c_remove(struct i2c_client *i2c)
struct lcd2s_data *lcd2s = i2c_get_clientdata(i2c);

charlcd_unregister(lcd2s->charlcd);
kfree(lcd2s->charlcd);
charlcd_free(lcd2s->charlcd);
return 0;
}

Expand Down

0 comments on commit 307c637

Please sign in to comment.