Re: [PATCH] 2.6.6 memory allocation checks incs46xx_dsp_proc_register_scb_desc()

From: Yury Umanets
Date: Sun Jun 06 2004 - 12:57:01 EST


On Sun, 2004-06-06 at 20:40, Yury Umanets wrote:
> On Sun, 2004-06-06 at 20:20, Randy.Dunlap wrote:
> > On Sun, 06 Jun 2004 19:06:42 +0300 Yury Umanets wrote:
> >
> > | Adds memory allocation checks in cs46xx_dsp_proc_register_scb_desc()
> > |
> > | ./linux-2.6.6-modified/sound/pci/cs46xx/dsp_spos_scb_lib.c | 3 +++
> > | 1 files changed, 3 insertions(+)
> > |
> > | diff -rupN ./linux-2.6.6/sound/pci/cs46xx/dsp_spos_scb_lib.c
> > | ./linux-2.6.6-modified/sound/pci/cs46xx/dsp_spos_scb_lib.c
> > | --- ./linux-2.6.6/sound/pci/cs46xx/dsp_spos_scb_lib.c Mon May 10
> > | 05:33:20 2004
> > | +++ ./linux-2.6.6-modified/sound/pci/cs46xx/dsp_spos_scb_lib.c Wed Jun
> > | 2 14:57:41 2004
> > | @@ -246,6 +246,9 @@ void cs46xx_dsp_proc_register_scb_desc (
> > | if ((entry = snd_info_create_card_entry(ins->snd_card, scb->scb_name,
> > | ins->proc_dsp_dir)) != NULL) {
> > | scb_info = kmalloc(sizeof(proc_scb_info_t), GFP_KERNEL);
> > | + if (!scb_info)
> > | + return;
> > | +
> > | scb_info->chip = chip;
> > | scb_info->scb_desc = scb;
> > |
> >
> > This seems to be missing some other cleanup on the failure path,
> > like it does below in the same function:
> >
> > snd_info_free_entry(entry);
> oops, you're right. Thanks Randy. Will fix that.
>

Corrected version is bellow.

./linux-2.6.6-modified/sound/pci/cs46xx/dsp_spos_scb_lib.c | 8
+++++++-
1 files changed, 7 insertions(+), 1 deletion(-)

Signed-off-by: Yury Umanets <torque@xxxxxxxxxxx>

diff -rupN ./linux-2.6.6/sound/pci/cs46xx/dsp_spos_scb_lib.c
./linux-2.6.6-modified/sound/pci/cs46xx/dsp_spos_scb_lib.c
--- ./linux-2.6.6/sound/pci/cs46xx/dsp_spos_scb_lib.c Mon May 10
05:33:20 2004
+++ ./linux-2.6.6-modified/sound/pci/cs46xx/dsp_spos_scb_lib.c Sun Jun
6 20:43:39 2004
@@ -246,6 +246,12 @@ void cs46xx_dsp_proc_register_scb_desc (
if ((entry = snd_info_create_card_entry(ins->snd_card, scb->scb_name,
ins->proc_dsp_dir)) != NULL) {
scb_info = kmalloc(sizeof(proc_scb_info_t), GFP_KERNEL);
+ if (!scb_info) {
+ snd_info_free_entry(entry);
+ entry = NULL;
+ goto out;
+ }
+
scb_info->chip = chip;
scb_info->scb_desc = scb;

@@ -262,7 +268,7 @@ void cs46xx_dsp_proc_register_scb_desc (
entry = NULL;
}
}
-
+out:
scb->proc_info = entry;
}
}



--
umka

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/