Make ssd1307fb_update_display() return an error code, so callers that can handle failures can propagate it.
Signed-off-by: Geert Uytterhoeven geert@linux-m68k.org --- drivers/video/fbdev/ssd1307fb.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c index eda448b7a0c9d8ce..e6b6263e3bef847f 100644 --- a/drivers/video/fbdev/ssd1307fb.c +++ b/drivers/video/fbdev/ssd1307fb.c @@ -152,17 +152,17 @@ static inline int ssd1307fb_write_cmd(struct i2c_client *client, u8 cmd) return ret; }
-static void ssd1307fb_update_display(struct ssd1307fb_par *par) +static int ssd1307fb_update_display(struct ssd1307fb_par *par) { struct ssd1307fb_array *array; u8 *vmem = par->info->screen_buffer; unsigned int line_length = par->info->fix.line_length; unsigned int pages = DIV_ROUND_UP(par->height, 8); - int i, j, k; + int ret, i, j, k;
array = ssd1307fb_alloc_array(par->width * pages, SSD1307FB_DATA); if (!array) - return; + return -ENOMEM;
/* * The screen is divided in pages, each having a height of 8 @@ -210,8 +210,9 @@ static void ssd1307fb_update_display(struct ssd1307fb_par *par) } }
- ssd1307fb_write_array(par->client, array, par->width * pages); + ret = ssd1307fb_write_array(par->client, array, par->width * pages); kfree(array); + return ret; }
@@ -222,6 +223,7 @@ static ssize_t ssd1307fb_write(struct fb_info *info, const char __user *buf, unsigned long total_size; unsigned long p = *ppos; void *dst; + int ret;
total_size = info->fix.smem_len;
@@ -239,7 +241,9 @@ static ssize_t ssd1307fb_write(struct fb_info *info, const char __user *buf, if (copy_from_user(dst, buf, count)) return -EFAULT;
- ssd1307fb_update_display(par); + ret = ssd1307fb_update_display(par); + if (ret < 0) + return ret;
*ppos += count;
@@ -483,7 +487,9 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) return ret;
/* Clear the screen */ - ssd1307fb_update_display(par); + ret = ssd1307fb_update_display(par); + if (ret < 0) + return ret;
/* Turn on the display */ ret = ssd1307fb_write_cmd(par->client, SSD1307FB_DISPLAY_ON);