diff options
| -rw-r--r-- | drivers/video/fbdev/sm712fb.c | 21 | 
1 files changed, 4 insertions, 17 deletions
diff --git a/drivers/video/fbdev/sm712fb.c b/drivers/video/fbdev/sm712fb.c index b60a2730f0a8..092a1caa1208 100644 --- a/drivers/video/fbdev/sm712fb.c +++ b/drivers/video/fbdev/sm712fb.c @@ -1119,7 +1119,7 @@ static ssize_t smtcfb_write(struct fb_info *info, const char __user *buf,  		count = total_size - p;  	} -	buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL); +	buffer = kmalloc(PAGE_SIZE, GFP_KERNEL);  	if (!buffer)  		return -ENOMEM; @@ -1137,24 +1137,11 @@ static ssize_t smtcfb_write(struct fb_info *info, const char __user *buf,  			break;  		} -		for (i = c >> 2; i--;) { -			fb_writel(big_swap(*src), dst++); +		for (i = (c + 3) >> 2; i--;) { +			fb_writel(big_swap(*src), dst); +			dst++;  			src++;  		} -		if (c & 3) { -			u8 *src8 = (u8 *)src; -			u8 __iomem *dst8 = (u8 __iomem *)dst; - -			for (i = c & 3; i--;) { -				if (i & 1) { -					fb_writeb(*src8++, ++dst8); -				} else { -					fb_writeb(*src8++, --dst8); -					dst8 += 2; -				} -			} -			dst = (u32 __iomem *)dst8; -		}  		*ppos += c;  		buf += c;  | 
