Re: [PATCH 0/7] HID: picoLCD updates
From: Tejun Heo <tj@kernel.org>
Date: 2012-08-13 23:27:16
Also in:
linux-input, lkml
Hello, On Thu, Aug 09, 2012 at 08:09:47PM +0200, Bruno Prémont wrote:
As you are working on workqueues and related code, could you have a look at my usage of them in combination with db_defio? The delayed memory corruptions or system reboots after unbinding/unplugging the PicoLCD seem very much related to workqueue used to handle the deferred IO to framebuffer. I think things don't get cleaned-up as they should though I'm not sure where the trouble lies. For ease of reading, I'm inlineing below the framebuffer related code of PicoLCD (for complete driver after this patch series apply the whole series on top of 3.5 https://lkml.org/lkml/2012/7/30/375 )
...
void picolcd_exit_framebuffer(struct picolcd_data *data)
{
struct fb_info *info = data->fb_info;
u8 *fb_vbitmap = data->fb_vbitmap;
if (!info)
return;
device_remove_file(&data->hdev->dev, &dev_attr_fb_update_rate);
info->par = NULL;
unregister_framebuffer(info);
data->fb_vbitmap = NULL;
data->fb_bitmap = NULL;
data->fb_bpp = 0;
data->fb_info = NULL;
kfree(fb_vbitmap);
}I'm kinda shooting in the dark but who flushes / cancels fb_info->deferred_work? Thanks. -- tejun