summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorDan Carpenter <error27@gmail.com>2010-11-16 12:11:02 +0300
committerPaul Mundt <lethal@linux-sh.org>2010-11-17 14:55:45 +0900
commit1e7c7804884fc5751e3872f13498fd533325f8b2 (patch)
tree1d9a9ead0d2c7cb18e46cc35878a0d64daaeb545 /init
parentc353103de8795358af1584088aa471571decb307 (diff)
fbcmap: integer overflow bug
There is an integer overflow in fb_set_user_cmap() because cmap->len * 2 can wrap. It's basically harmless. Your terminal will be messed up until you type reset. This patch does three things to fix the bug. First, it checks the return value of fb_copy_cmap() in fb_alloc_cmap(). That is enough to fix address the overflow. Second it checks for the integer overflow in fb_set_user_cmap(). Lastly I wanted to cap "cmap->len" in fb_set_user_cmap() much lower because it gets used to determine the size of allocation. Unfortunately no one knows what the limit should be. Instead what this patch does is makes the allocation happen with GFP_KERNEL instead of GFP_ATOMIC and lets the kmalloc() decide what values of cmap->len are reasonable. To do this, the patch introduces a function called fb_alloc_cmap_gfp() which is like fb_alloc_cmap() except that it takes a GFP flag. Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'init')
0 files changed, 0 insertions, 0 deletions