mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 19:51:31 -04:00
treewide: kmalloc() -> kmalloc_array()
The kmalloc() function has a 2-factor argument form, kmalloc_array(). This
patch replaces cases of:
kmalloc(a * b, gfp)
with:
kmalloc_array(a * b, gfp)
as well as handling cases of:
kmalloc(a * b * c, gfp)
with:
kmalloc(array3_size(a, b, c), gfp)
as it's slightly less ugly than:
kmalloc_array(array_size(a, b), c, gfp)
This does, however, attempt to ignore constant size factors like:
kmalloc(4 * 1024, gfp)
though any constants defined via macros get caught up in the conversion.
Any factors with a sizeof() of "unsigned char", "char", and "u8" were
dropped, since they're redundant.
The tools/ directory was manually excluded, since it has its own
implementation of kmalloc().
The Coccinelle script used for this was:
// Fix redundant parens around sizeof().
@@
type TYPE;
expression THING, E;
@@
(
kmalloc(
- (sizeof(TYPE)) * E
+ sizeof(TYPE) * E
, ...)
|
kmalloc(
- (sizeof(THING)) * E
+ sizeof(THING) * E
, ...)
)
// Drop single-byte sizes and redundant parens.
@@
expression COUNT;
typedef u8;
typedef __u8;
@@
(
kmalloc(
- sizeof(u8) * (COUNT)
+ COUNT
, ...)
|
kmalloc(
- sizeof(__u8) * (COUNT)
+ COUNT
, ...)
|
kmalloc(
- sizeof(char) * (COUNT)
+ COUNT
, ...)
|
kmalloc(
- sizeof(unsigned char) * (COUNT)
+ COUNT
, ...)
|
kmalloc(
- sizeof(u8) * COUNT
+ COUNT
, ...)
|
kmalloc(
- sizeof(__u8) * COUNT
+ COUNT
, ...)
|
kmalloc(
- sizeof(char) * COUNT
+ COUNT
, ...)
|
kmalloc(
- sizeof(unsigned char) * COUNT
+ COUNT
, ...)
)
// 2-factor product with sizeof(type/expression) and identifier or constant.
@@
type TYPE;
expression THING;
identifier COUNT_ID;
constant COUNT_CONST;
@@
(
- kmalloc
+ kmalloc_array
(
- sizeof(TYPE) * (COUNT_ID)
+ COUNT_ID, sizeof(TYPE)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(TYPE) * COUNT_ID
+ COUNT_ID, sizeof(TYPE)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(TYPE) * (COUNT_CONST)
+ COUNT_CONST, sizeof(TYPE)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(TYPE) * COUNT_CONST
+ COUNT_CONST, sizeof(TYPE)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(THING) * (COUNT_ID)
+ COUNT_ID, sizeof(THING)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(THING) * COUNT_ID
+ COUNT_ID, sizeof(THING)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(THING) * (COUNT_CONST)
+ COUNT_CONST, sizeof(THING)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(THING) * COUNT_CONST
+ COUNT_CONST, sizeof(THING)
, ...)
)
// 2-factor product, only identifiers.
@@
identifier SIZE, COUNT;
@@
- kmalloc
+ kmalloc_array
(
- SIZE * COUNT
+ COUNT, SIZE
, ...)
// 3-factor product with 1 sizeof(type) or sizeof(expression), with
// redundant parens removed.
@@
expression THING;
identifier STRIDE, COUNT;
type TYPE;
@@
(
kmalloc(
- sizeof(TYPE) * (COUNT) * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
kmalloc(
- sizeof(TYPE) * (COUNT) * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
kmalloc(
- sizeof(TYPE) * COUNT * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
kmalloc(
- sizeof(TYPE) * COUNT * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
kmalloc(
- sizeof(THING) * (COUNT) * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
|
kmalloc(
- sizeof(THING) * (COUNT) * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
|
kmalloc(
- sizeof(THING) * COUNT * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
|
kmalloc(
- sizeof(THING) * COUNT * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
)
// 3-factor product with 2 sizeof(variable), with redundant parens removed.
@@
expression THING1, THING2;
identifier COUNT;
type TYPE1, TYPE2;
@@
(
kmalloc(
- sizeof(TYPE1) * sizeof(TYPE2) * COUNT
+ array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
, ...)
|
kmalloc(
- sizeof(TYPE1) * sizeof(THING2) * (COUNT)
+ array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
, ...)
|
kmalloc(
- sizeof(THING1) * sizeof(THING2) * COUNT
+ array3_size(COUNT, sizeof(THING1), sizeof(THING2))
, ...)
|
kmalloc(
- sizeof(THING1) * sizeof(THING2) * (COUNT)
+ array3_size(COUNT, sizeof(THING1), sizeof(THING2))
, ...)
|
kmalloc(
- sizeof(TYPE1) * sizeof(THING2) * COUNT
+ array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
, ...)
|
kmalloc(
- sizeof(TYPE1) * sizeof(THING2) * (COUNT)
+ array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
, ...)
)
// 3-factor product, only identifiers, with redundant parens removed.
@@
identifier STRIDE, SIZE, COUNT;
@@
(
kmalloc(
- (COUNT) * STRIDE * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
kmalloc(
- COUNT * (STRIDE) * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
kmalloc(
- COUNT * STRIDE * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
kmalloc(
- (COUNT) * (STRIDE) * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
kmalloc(
- COUNT * (STRIDE) * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
kmalloc(
- (COUNT) * STRIDE * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
kmalloc(
- (COUNT) * (STRIDE) * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
kmalloc(
- COUNT * STRIDE * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
)
// Any remaining multi-factor products, first at least 3-factor products,
// when they're not all constants...
@@
expression E1, E2, E3;
constant C1, C2, C3;
@@
(
kmalloc(C1 * C2 * C3, ...)
|
kmalloc(
- (E1) * E2 * E3
+ array3_size(E1, E2, E3)
, ...)
|
kmalloc(
- (E1) * (E2) * E3
+ array3_size(E1, E2, E3)
, ...)
|
kmalloc(
- (E1) * (E2) * (E3)
+ array3_size(E1, E2, E3)
, ...)
|
kmalloc(
- E1 * E2 * E3
+ array3_size(E1, E2, E3)
, ...)
)
// And then all remaining 2 factors products when they're not all constants,
// keeping sizeof() as the second factor argument.
@@
expression THING, E1, E2;
type TYPE;
constant C1, C2, C3;
@@
(
kmalloc(sizeof(THING) * C2, ...)
|
kmalloc(sizeof(TYPE) * C2, ...)
|
kmalloc(C1 * C2 * C3, ...)
|
kmalloc(C1 * C2, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(TYPE) * (E2)
+ E2, sizeof(TYPE)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(TYPE) * E2
+ E2, sizeof(TYPE)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(THING) * (E2)
+ E2, sizeof(THING)
, ...)
|
- kmalloc
+ kmalloc_array
(
- sizeof(THING) * E2
+ E2, sizeof(THING)
, ...)
|
- kmalloc
+ kmalloc_array
(
- (E1) * E2
+ E1, E2
, ...)
|
- kmalloc
+ kmalloc_array
(
- (E1) * (E2)
+ E1, E2
, ...)
|
- kmalloc
+ kmalloc_array
(
- E1 * E2
+ E1, E2
, ...)
)
Signed-off-by: Kees Cook <[email protected]>
This commit is contained in:
parent
1c542f38ab
commit
6da2ec5605
377 changed files with 1014 additions and 748 deletions
|
|
@ -269,7 +269,7 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, int mode,
|
|||
if (attribute) {
|
||||
u8 *dst;
|
||||
|
||||
dst = kmalloc(w * vc->vc_font.height, GFP_ATOMIC);
|
||||
dst = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
|
||||
if (!dst)
|
||||
return;
|
||||
kfree(ops->cursor_data);
|
||||
|
|
@ -312,7 +312,7 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, int mode,
|
|||
vc->vc_cursor_type != ops->p->cursor_shape ||
|
||||
ops->cursor_state.mask == NULL ||
|
||||
ops->cursor_reset) {
|
||||
char *mask = kmalloc(w*vc->vc_font.height, GFP_ATOMIC);
|
||||
char *mask = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
|
||||
int cur_height, size, i = 0;
|
||||
u8 msk = 0xff;
|
||||
|
||||
|
|
|
|||
|
|
@ -591,7 +591,8 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
|
|||
if (scr_readw(r) != vc->vc_video_erase_char)
|
||||
break;
|
||||
if (r != q && new_rows >= rows + logo_lines) {
|
||||
save = kmalloc(logo_lines * new_cols * 2, GFP_KERNEL);
|
||||
save = kmalloc(array3_size(logo_lines, new_cols, 2),
|
||||
GFP_KERNEL);
|
||||
if (save) {
|
||||
int i = cols < new_cols ? cols : new_cols;
|
||||
scr_memsetw(save, erase, logo_lines * new_cols * 2);
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, int mode,
|
|||
if (attribute) {
|
||||
u8 *dst;
|
||||
|
||||
dst = kmalloc(w * vc->vc_font.width, GFP_ATOMIC);
|
||||
dst = kmalloc_array(w, vc->vc_font.width, GFP_ATOMIC);
|
||||
if (!dst)
|
||||
return;
|
||||
kfree(ops->cursor_data);
|
||||
|
|
@ -304,14 +304,15 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, int mode,
|
|||
vc->vc_cursor_type != ops->p->cursor_shape ||
|
||||
ops->cursor_state.mask == NULL ||
|
||||
ops->cursor_reset) {
|
||||
char *tmp, *mask = kmalloc(w*vc->vc_font.width, GFP_ATOMIC);
|
||||
char *tmp, *mask = kmalloc_array(w, vc->vc_font.width,
|
||||
GFP_ATOMIC);
|
||||
int cur_height, size, i = 0;
|
||||
int width = (vc->vc_font.width + 7)/8;
|
||||
|
||||
if (!mask)
|
||||
return;
|
||||
|
||||
tmp = kmalloc(width * vc->vc_font.height, GFP_ATOMIC);
|
||||
tmp = kmalloc_array(width, vc->vc_font.height, GFP_ATOMIC);
|
||||
|
||||
if (!tmp) {
|
||||
kfree(mask);
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, int mode,
|
|||
if (attribute) {
|
||||
u8 *dst;
|
||||
|
||||
dst = kmalloc(w * vc->vc_font.width, GFP_ATOMIC);
|
||||
dst = kmalloc_array(w, vc->vc_font.width, GFP_ATOMIC);
|
||||
if (!dst)
|
||||
return;
|
||||
kfree(ops->cursor_data);
|
||||
|
|
@ -287,14 +287,15 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, int mode,
|
|||
vc->vc_cursor_type != ops->p->cursor_shape ||
|
||||
ops->cursor_state.mask == NULL ||
|
||||
ops->cursor_reset) {
|
||||
char *tmp, *mask = kmalloc(w*vc->vc_font.width, GFP_ATOMIC);
|
||||
char *tmp, *mask = kmalloc_array(w, vc->vc_font.width,
|
||||
GFP_ATOMIC);
|
||||
int cur_height, size, i = 0;
|
||||
int width = (vc->vc_font.width + 7)/8;
|
||||
|
||||
if (!mask)
|
||||
return;
|
||||
|
||||
tmp = kmalloc(width * vc->vc_font.height, GFP_ATOMIC);
|
||||
tmp = kmalloc_array(width, vc->vc_font.height, GFP_ATOMIC);
|
||||
|
||||
if (!tmp) {
|
||||
kfree(mask);
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
|
|||
info->fbops->fb_sync(info);
|
||||
|
||||
if (ops->fd_size < d_cellsize * len) {
|
||||
dst = kmalloc(d_cellsize * len, GFP_KERNEL);
|
||||
dst = kmalloc_array(len, d_cellsize, GFP_KERNEL);
|
||||
|
||||
if (dst == NULL) {
|
||||
err = -ENOMEM;
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, int mode,
|
|||
if (attribute) {
|
||||
u8 *dst;
|
||||
|
||||
dst = kmalloc(w * vc->vc_font.height, GFP_ATOMIC);
|
||||
dst = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
|
||||
if (!dst)
|
||||
return;
|
||||
kfree(ops->cursor_data);
|
||||
|
|
@ -335,7 +335,7 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, int mode,
|
|||
vc->vc_cursor_type != ops->p->cursor_shape ||
|
||||
ops->cursor_state.mask == NULL ||
|
||||
ops->cursor_reset) {
|
||||
char *mask = kmalloc(w*vc->vc_font.height, GFP_ATOMIC);
|
||||
char *mask = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
|
||||
int cur_height, size, i = 0;
|
||||
u8 msk = 0xff;
|
||||
|
||||
|
|
|
|||
|
|
@ -489,7 +489,8 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
|
|||
}
|
||||
|
||||
if (fb_logo.depth <= 4) {
|
||||
logo_new = kmalloc(logo->width * logo->height, GFP_KERNEL);
|
||||
logo_new = kmalloc_array(logo->width, logo->height,
|
||||
GFP_KERNEL);
|
||||
if (logo_new == NULL) {
|
||||
kfree(palette);
|
||||
if (saved_pseudo_palette)
|
||||
|
|
@ -506,8 +507,8 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
|
|||
image.height = logo->height;
|
||||
|
||||
if (rotate) {
|
||||
logo_rotate = kmalloc(logo->width *
|
||||
logo->height, GFP_KERNEL);
|
||||
logo_rotate = kmalloc_array(logo->width, logo->height,
|
||||
GFP_KERNEL);
|
||||
if (logo_rotate)
|
||||
fb_rotate_logo(info, logo_rotate, &image, rotate);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -671,7 +671,7 @@ static struct fb_videomode *fb_create_modedb(unsigned char *edid, int *dbsize,
|
|||
}
|
||||
|
||||
*dbsize = num;
|
||||
m = kmalloc(num * sizeof(struct fb_videomode), GFP_KERNEL);
|
||||
m = kmalloc_array(num, sizeof(struct fb_videomode), GFP_KERNEL);
|
||||
if (!m)
|
||||
return mode;
|
||||
memmove(m, mode, num * sizeof(struct fb_videomode));
|
||||
|
|
|
|||
|
|
@ -662,7 +662,7 @@ static int imxfb_init_fbinfo(struct platform_device *pdev)
|
|||
|
||||
pr_debug("%s\n",__func__);
|
||||
|
||||
info->pseudo_palette = kmalloc(sizeof(u32) * 16, GFP_KERNEL);
|
||||
info->pseudo_palette = kmalloc_array(16, sizeof(u32), GFP_KERNEL);
|
||||
if (!info->pseudo_palette)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
|||
|
|
@ -245,7 +245,7 @@ static void mb86290fb_imageblit(struct fb_info *info,
|
|||
return;
|
||||
}
|
||||
|
||||
cmd = kmalloc(cmdlen * 4, GFP_DMA);
|
||||
cmd = kmalloc_array(cmdlen, 4, GFP_DMA);
|
||||
if (!cmd)
|
||||
return cfb_imageblit(info, image);
|
||||
cmdfn(cmd, step, dx, dy, width, height, fgcolor, bgcolor, image, info);
|
||||
|
|
|
|||
|
|
@ -566,7 +566,7 @@ static int nvidiafb_cursor(struct fb_info *info, struct fb_cursor *cursor)
|
|||
u8 *msk = (u8 *) cursor->mask;
|
||||
u8 *src;
|
||||
|
||||
src = kmalloc(s_pitch * cursor->image.height, GFP_ATOMIC);
|
||||
src = kmalloc_array(s_pitch, cursor->image.height, GFP_ATOMIC);
|
||||
|
||||
if (src) {
|
||||
switch (cursor->rop) {
|
||||
|
|
|
|||
|
|
@ -682,7 +682,7 @@ static ssize_t pvr2fb_write(struct fb_info *info, const char *buf,
|
|||
|
||||
nr_pages = (count + PAGE_SIZE - 1) >> PAGE_SHIFT;
|
||||
|
||||
pages = kmalloc(nr_pages * sizeof(struct page *), GFP_KERNEL);
|
||||
pages = kmalloc_array(nr_pages, sizeof(struct page *), GFP_KERNEL);
|
||||
if (!pages)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
|||
|
|
@ -1615,7 +1615,7 @@ static int rivafb_cursor(struct fb_info *info, struct fb_cursor *cursor)
|
|||
u8 *msk = (u8 *) cursor->mask;
|
||||
u8 *src;
|
||||
|
||||
src = kmalloc(s_pitch * cursor->image.height, GFP_ATOMIC);
|
||||
src = kmalloc_array(s_pitch, cursor->image.height, GFP_ATOMIC);
|
||||
|
||||
if (src) {
|
||||
switch (cursor->rop) {
|
||||
|
|
|
|||
|
|
@ -596,7 +596,8 @@ static int viafb_ioctl(struct fb_info *info, u_int cmd, u_long arg)
|
|||
break;
|
||||
|
||||
case VIAFB_GET_GAMMA_LUT:
|
||||
viafb_gamma_table = kmalloc(256 * sizeof(u32), GFP_KERNEL);
|
||||
viafb_gamma_table = kmalloc_array(256, sizeof(u32),
|
||||
GFP_KERNEL);
|
||||
if (!viafb_gamma_table)
|
||||
return -ENOMEM;
|
||||
viafb_get_gamma_table(viafb_gamma_table);
|
||||
|
|
|
|||
|
|
@ -693,7 +693,8 @@ int w100fb_probe(struct platform_device *pdev)
|
|||
goto out;
|
||||
}
|
||||
|
||||
info->pseudo_palette = kmalloc(sizeof (u32) * MAX_PALETTES, GFP_KERNEL);
|
||||
info->pseudo_palette = kmalloc_array(MAX_PALETTES, sizeof(u32),
|
||||
GFP_KERNEL);
|
||||
if (!info->pseudo_palette) {
|
||||
err = -ENOMEM;
|
||||
goto out;
|
||||
|
|
|
|||
Loading…
Reference in a new issue