On Tue, 31 Jan 2017 12:54:36 -0800 Dmitry Torokhov <dmitry.torok...@gmail.com> wrote:
> 'fbdev' is allocated as part of larger ht16k33_priv structure; trying to > free it will cause troubles. > > Signed-off-by: Dmitry Torokhov <dmitry.torok...@gmail.com> > --- > > Note that the patches have not been tried on a real hardware. > > I am pretty confident in #1 and #3, but #2 is larger and it would be great > if someone with hardware tried running it before it gets applied. > > Thanks! > > drivers/auxdisplay/ht16k33.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c > index eeb323f56c07..f2f304b3f061 100644 > --- a/drivers/auxdisplay/ht16k33.c > +++ b/drivers/auxdisplay/ht16k33.c > @@ -378,7 +378,7 @@ static int ht16k33_probe(struct i2c_client *client, > fbdev->buffer = (unsigned char *) get_zeroed_page(GFP_KERNEL); > if (!fbdev->buffer) { > err = -ENOMEM; > - goto err_free_fbdev; > + goto err_destroy_wq; > } > > fbdev->cache = devm_kmalloc(&client->dev, HT16K33_FB_SIZE, GFP_KERNEL); > @@ -510,8 +510,6 @@ static int ht16k33_probe(struct i2c_client *client, > framebuffer_release(fbdev->info); > err_fbdev_buffer: > free_page((unsigned long) fbdev->buffer); > -err_free_fbdev: > - kfree(fbdev); > err_destroy_wq: > destroy_workqueue(priv->workqueue); > Acked-by: Robin van der Gracht <ro...@protonic.nl>