From: Pavel Machek This prevents memory leak if something goes wrong. arch/i386/kernel/cpu/cpufreq/powernow-k8.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN arch/i386/kernel/cpu/cpufreq/powernow-k8.c~cpufreq-memleak-fix arch/i386/kernel/cpu/cpufreq/powernow-k8.c --- 25/arch/i386/kernel/cpu/cpufreq/powernow-k8.c~cpufreq-memleak-fix 2004-01-03 11:41:46.000000000 -0800 +++ 25-akpm/arch/i386/kernel/cpu/cpufreq/powernow-k8.c 2004-01-03 11:41:46.000000000 -0800 @@ -687,11 +687,13 @@ find_psb_table(void) if (ppst[j].vid < rvo) { /* vid+rvo >= 0 */ printk(KERN_ERR BFX "0 vid exceeded with pstate %d\n", j); + kfree(ppst); return -ENODEV; } if (ppst[j].vid < maxvid+rvo) { /* vid+rvo >= maxvid */ printk(KERN_ERR BFX "maxvid exceeded with pstate %d\n", j); + kfree(ppst); return -ENODEV; } } @@ -706,7 +708,7 @@ find_psb_table(void) for (j = 0; j < numps; j++) if ((ppst[j].fid==currfid) && (ppst[j].vid==currvid)) - return (0); + return 0; printk(KERN_ERR BFX "currfid/vid do not match PST, ignoring\n"); return 0; _