Am Tue, 3 Mar 2015 09:52:55 +0100 schrieb Maxime Ripard <maxime.ripard@xxxxxxxxxxxxxxxxxx>: > Hi, > > On Sun, Mar 01, 2015 at 11:27:55PM +0100, Thomas Niederprüm wrote: > > It makes sense to use vmalloc to allocate the video buffer since it > > has to be page aligned memory for using it with mmap. Also deffered > > io seems buggy in combination with kmalloc'ed memory (crash on > > unloading the module). > > > > Signed-off-by: Thomas Niederprüm <niederp@xxxxxxxxxxxxxxxx> > > --- > > drivers/video/fbdev/ssd1307fb.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/video/fbdev/ssd1307fb.c > > b/drivers/video/fbdev/ssd1307fb.c index 61e0ce8..25dd08d 100644 > > --- a/drivers/video/fbdev/ssd1307fb.c > > +++ b/drivers/video/fbdev/ssd1307fb.c > > @@ -11,6 +11,7 @@ > > #include <linux/i2c.h> > > #include <linux/fb.h> > > #include <linux/uaccess.h> > > +#include <linux/vmalloc.h> > > #include <linux/of_device.h> > > #include <linux/of_gpio.h> > > #include <linux/pwm.h> > > @@ -489,7 +490,7 @@ static int ssd1307fb_probe(struct i2c_client > > *client, > > vmem_size = par->width * par->height / 8; > > > > - vmem = devm_kzalloc(&client->dev, vmem_size, GFP_KERNEL); > > + vmem = vzalloc(vmem_size); > > if (!vmem) { > > dev_err(&client->dev, "Couldn't allocate graphical > > memory.\n"); ret = -ENOMEM; > > @@ -559,6 +560,7 @@ panel_init_error: > > par->ops->remove(par); > > reset_oled_error: > > fb_deferred_io_cleanup(info); > > + vfree(vmem); > > fb_alloc_error: > > framebuffer_release(info); > > return ret; > > Don't you need the vfree in the remove too? Yes, of course. Memory will be freed in v3 > > Maxime > -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html