Skip to contentSkip to conversation

efivars.c spinlock fix

PATCH New [email protected] 1 participant 1 message Sep 23, 2001

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 efivars.c spinlock fix

David, below and posted at
http://domsch.com/linux/patches/efivars-spinlock-20010718.patch is a patch to prevent efivars.c from holding a spinlock while allocating memory. Also frees an allocation in the event of an error. This applies against your latest 2.4.9 patch. Please include this in your 2.4.10 patch.

Thanks,
Matt

Signature · 35 lines
Matt Domsch
Sr. Software Engineer
Dell Linux Solutions
www.dell.com/linux
#2 Linux Server provider with 17% in the US and 14% Worldwide (IDC)!
#3 Unix provider with 18% in the US (Dataquest)!

$ more efivars-spinlock-20010718.patch
--- linux/arch/ia64/kernel/efivars.c.orig       Wed Jul 18 22:09:12 2001
+++ linux/arch/ia64/kernel/efivars.c    Wed Jul 18 22:13:36 2001
@@ -276,21 +276,20 @@
        if (!capable(CAP_SYS_ADMIN))
                return -EACCES;

-       spin_lock(&efivars_lock);
        MOD_INC_USE_COUNT;

        var_data = kmalloc(size, GFP_KERNEL);
        if (!var_data) {
                MOD_DEC_USE_COUNT;
-               spin_unlock(&efivars_lock);
                return -ENOMEM;
        }
        if (copy_from_user(var_data, buffer, size)) {
                MOD_DEC_USE_COUNT;
-               spin_unlock(&efivars_lock);
+               kfree(var_data);
                return -EFAULT;
        }


+       spin_lock(&efivars_lock);

        /* Since the data ptr we've currently got is probably for
           a different variable find the right variable.