2013-09-05 05:57:55

by Duan Jiong

[permalink] [raw]
Subject: [PATCH] ALSA: emu10k1: casting (void *) value returned by kcalloc is useless

From: Duan Jiong <[email protected]>

Casting (void *) value returned by kcalloc is useless
as mentioned in Documentation/CodingStyle, Chap 14.

Signed-off-by: Duan Jiong <[email protected]>
---
sound/pci/emu10k1/emufx.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
index 0275209..68edb2d 100644
--- a/sound/pci/emu10k1/emufx.c
+++ b/sound/pci/emu10k1/emufx.c
@@ -1183,9 +1183,8 @@ static int _snd_emu10k1_audigy_init_efx(struct snd_emu10k1 *emu)
mm_segment_t seg;

if ((icode = kzalloc(sizeof(*icode), GFP_KERNEL)) == NULL ||
- (icode->gpr_map = (u_int32_t __user *)
- kcalloc(512 + 256 + 256 + 2 * 1024, sizeof(u_int32_t),
- GFP_KERNEL)) == NULL ||
+ (icode->gpr_map = kcalloc(512 + 256 + 256 + 2 * 1024,
+ sizeof(u_int32_t), GFP_KERNEL)) == NULL ||
(controls = kcalloc(SND_EMU10K1_GPR_CONTROLS,
sizeof(*controls), GFP_KERNEL)) == NULL) {
err = -ENOMEM;
@@ -1815,9 +1814,8 @@ static int _snd_emu10k1_init_efx(struct snd_emu10k1 *emu)

if ((icode = kzalloc(sizeof(*icode), GFP_KERNEL)) == NULL)
return -ENOMEM;
- if ((icode->gpr_map = (u_int32_t __user *)
- kcalloc(256 + 160 + 160 + 2 * 512, sizeof(u_int32_t),
- GFP_KERNEL)) == NULL ||
+ if ((icode->gpr_map = kcalloc(256 + 160 + 160 + 2 * 512,
+ sizeof(u_int32_t), GFP_KERNEL)) == NULL ||
(controls = kcalloc(SND_EMU10K1_GPR_CONTROLS,
sizeof(struct snd_emu10k1_fx8010_control_gpr),
GFP_KERNEL)) == NULL ||
--
1.8.3.1


2013-09-05 06:12:38

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] ALSA: emu10k1: casting (void *) value returned by kcalloc is useless

On Thu, 2013-09-05 at 13:57 +0800, Duan Jiong wrote:
> From: Duan Jiong <[email protected]>
>
> Casting (void *) value returned by kcalloc is useless
> as mentioned in Documentation/CodingStyle, Chap 14.

__user is an important marker that is lost here.

> diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
[]
> @@ -1183,9 +1183,8 @@ static int _snd_emu10k1_audigy_init_efx(struct snd_emu10k1 *emu)
> mm_segment_t seg;
>
> if ((icode = kzalloc(sizeof(*icode), GFP_KERNEL)) == NULL ||
> - (icode->gpr_map = (u_int32_t __user *)
> - kcalloc(512 + 256 + 256 + 2 * 1024, sizeof(u_int32_t),
> - GFP_KERNEL)) == NULL ||
> + (icode->gpr_map = kcalloc(512 + 256 + 256 + 2 * 1024,
> + sizeof(u_int32_t), GFP_KERNEL)) == NULL ||
> (controls = kcalloc(SND_EMU10K1_GPR_CONTROLS,
> sizeof(*controls), GFP_KERNEL)) == NULL) {
> err = -ENOMEM;

I think this would be clearer as

err = -ENOMEM;
icode = kzalloc(sizeof(*icode), GFP_KERNEL)
if (!icode)
goto err;
icode->gpr_map = (__user)kcalloc(512 + 256 + 256 + 2 * 1024,
sizeof(u_int32_t), GFP_KERNEL);
if (!icode->gpr_map)
goto err;
controls = kcalloc(SND_EMU10K1_GPR_CONTROLS,
sizeof(*controls), GFP_KERNEL);
if (!controls)
goto err;


2013-09-05 10:11:16

by Duan Jiong

[permalink] [raw]
Subject: Re: [PATCH] ALSA: emu10k1: casting (void *) value returned by kcalloc is useless

于 2013年09月05日 14:12, Joe Perches 写道:
> On Thu, 2013-09-05 at 13:57 +0800, Duan Jiong wrote:
>> From: Duan Jiong <[email protected]>
>>
>> Casting (void *) value returned by kcalloc is useless
>> as mentioned in Documentation/CodingStyle, Chap 14.
>
> __user is an important marker that is lost here.
>
>> diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
> []
>> @@ -1183,9 +1183,8 @@ static int _snd_emu10k1_audigy_init_efx(struct snd_emu10k1 *emu)
>> mm_segment_t seg;
>>
>> if ((icode = kzalloc(sizeof(*icode), GFP_KERNEL)) == NULL ||
>> - (icode->gpr_map = (u_int32_t __user *)
>> - kcalloc(512 + 256 + 256 + 2 * 1024, sizeof(u_int32_t),
>> - GFP_KERNEL)) == NULL ||
>> + (icode->gpr_map = kcalloc(512 + 256 + 256 + 2 * 1024,
>> + sizeof(u_int32_t), GFP_KERNEL)) == NULL ||
>> (controls = kcalloc(SND_EMU10K1_GPR_CONTROLS,
>> sizeof(*controls), GFP_KERNEL)) == NULL) {
>> err = -ENOMEM;
>
> I think this would be clearer as
>
> err = -ENOMEM;
> icode = kzalloc(sizeof(*icode), GFP_KERNEL)
> if (!icode)
> goto err;
> icode->gpr_map = (__user)kcalloc(512 + 256 + 256 + 2 * 1024,
> sizeof(u_int32_t), GFP_KERNEL);
> if (!icode->gpr_map)
> goto err;
> controls = kcalloc(SND_EMU10K1_GPR_CONTROLS,
> sizeof(*controls), GFP_KERNEL);
> if (!controls)
> goto err;
>

Maybe it should keep the original style, because i do as you said, and
error messages appear during compiling the kernel.

Thanks,
Duan

2013-09-05 10:19:00

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] ALSA: emu10k1: casting (void *) value returned by kcalloc is useless

On Thu, 2013-09-05 at 18:10 +0800, Duan Jiong wrote:
> 于 2013年09月05日 14:12, Joe Perches 写道:
> > On Thu, 2013-09-05 at 13:57 +0800, Duan Jiong wrote:
> >> From: Duan Jiong <[email protected]>
> >>
> >> Casting (void *) value returned by kcalloc is useless
> >> as mentioned in Documentation/CodingStyle, Chap 14.
> >
> > __user is an important marker that is lost here.
> >
> >> diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
> > []
> >> @@ -1183,9 +1183,8 @@ static int _snd_emu10k1_audigy_init_efx(struct snd_emu10k1 *emu)
> >> mm_segment_t seg;
> >>
> >> if ((icode = kzalloc(sizeof(*icode), GFP_KERNEL)) == NULL ||
> >> - (icode->gpr_map = (u_int32_t __user *)
> >> - kcalloc(512 + 256 + 256 + 2 * 1024, sizeof(u_int32_t),
> >> - GFP_KERNEL)) == NULL ||
> >> + (icode->gpr_map = kcalloc(512 + 256 + 256 + 2 * 1024,
> >> + sizeof(u_int32_t), GFP_KERNEL)) == NULL ||
> >> (controls = kcalloc(SND_EMU10K1_GPR_CONTROLS,
> >> sizeof(*controls), GFP_KERNEL)) == NULL) {
> >> err = -ENOMEM;
> >
> > I think this would be clearer as
> >
> > err = -ENOMEM;
> > icode = kzalloc(sizeof(*icode), GFP_KERNEL)
> > if (!icode)
> > goto err;
> > icode->gpr_map = (__user)kcalloc(512 + 256 + 256 + 2 * 1024,
> > sizeof(u_int32_t), GFP_KERNEL);
> > if (!icode->gpr_map)
> > goto err;
> > controls = kcalloc(SND_EMU10K1_GPR_CONTROLS,
> > sizeof(*controls), GFP_KERNEL);
> > if (!controls)
> > goto err;
> >
>
> Maybe it should keep the original style, because i do as you said, and
> error messages appear during compiling the kernel.

I think your suggested patch causes sparse errors when
compiled with "$ make C=2 sound/pci/emu10k1/emufx.o"

And sorry, I just typed my reply in the email client and
I didn't compiled it or anything.

Most likely my suggestion needs a semicolon after the kzalloc
and (__user void *) on the kcalloc cast.

cheers, Joe