Merge branch ‘fixes-3.9-late’ of git:// [Linux 3.9]

This Linux kernel change "Merge branch ‘fixes-3.9-late’ of git://" is included in the Linux 3.9 release. This change is authored by Linus Torvalds <torvalds [at]> on Fri Apr 26 08:05:01 2013 -0700. The commit for this change in Linux stable tree is 96edcf3 (patch). Other info about this change: Merge: f464246 bda079d

Merge branch 'fixes-3.9-late' of git://

Pull late parisc fixes from Helge Deller:
 "I know it's *very* late in the 3.9 release cycle, but since there
  aren't that many people testing the parisc linux kernel, a few (for
  our port) critical issues just showed up a few days back for the first

  What's in it?
   - add missing __ucmpdi2 symbol, which is required for btrfs on 32bit
   - change kunmap() macro to static inline function.  This fixes a
     debian/gcc-4.4 build error.
   - add locking when doing PTE updates.  This fixes random userspace
   - disable (optional) -mlong-calls compiler option for modules, else
     modules can't be loaded at runtime.
   - a smart patch by Will Deacon which fixes 64bit put_user() warnings
     on 32bit kernel."

* 'fixes-3.9-late' of git://
  parisc: use spin_lock_irqsave/spin_unlock_irqrestore for PTE updates
  parisc: disable -mlong-calls compiler option for kernel modules
  parisc: uaccess: fix compiler warnings caused by __put_user casting
  parisc: Change kunmap macro to static inline function
  parisc: Provide __ucmpdi2 to resolve undefined references in 32 bit builds.

There is no are 0 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/firmware/efivars.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index 182ce94..f4baa11 100644
--- a/drivers/firmware/efivars.c
+++ b/drivers/firmware/efivars.c
@@ -1628,10 +1628,11 @@ static ssize_t efivar_delete(struct file *filp, struct kobject *kobj,
    return count;

-static bool variable_is_present(efi_char16_t *variable_name, efi_guid_t *vendor)
+static bool variable_is_present(struct efivars *efivars,
+               efi_char16_t *variable_name,
+               efi_guid_t *vendor)
    struct efivar_entry *entry, *n;
-   struct efivars *efivars = &__efivars;
    unsigned long strsize1, strsize2;
    bool found = false;

@@ -1703,8 +1704,8 @@ static void efivar_update_sysfs_entries(struct work_struct *work)
            if (status != EFI_SUCCESS) {
            } else {
-               if (!variable_is_present(variable_name,
-                   &vendor)) {
+               if (!variable_is_present(efivars,
+                   variable_name, &vendor)) {
                    found = true;
@@ -2008,7 +2009,8 @@ int register_efivars(struct efivars *efivars,
             * we'll ever see a different variable name,
             * and may end up looping here forever.
-           if (variable_is_present(variable_name, &vendor_guid)) {
+           if (variable_is_present(efivars, variable_name,
+                       &vendor_guid)) {
                dup_variable_bug(variable_name, &vendor_guid,
                status = EFI_NOT_FOUND;

Leave a Reply

Your email address will not be published. Required fields are marked *