Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cc2ea416b2aa04d0c34ff2281a23dae5b76b7b3b
Commit:     cc2ea416b2aa04d0c34ff2281a23dae5b76b7b3b
Parent:     4e7bd66318b3ae60fbba7d886d9a98b71ffbf74e
Author:     Andrew Morton <[EMAIL PROTECTED]>
AuthorDate: Sun Jul 15 23:41:38 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Mon Jul 16 09:05:50 2007 -0700

    uninline check_signature()
    
    This is a rather bizarre thing to have inlined in io.h.  Stick it in lib/
    instead.
    
    While we're there, despaghetti it a bit, and fix its off-by-one behaviour 
when
    passed a zero length.
    
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 include/linux/io.h    |   29 ++---------------------------
 lib/Makefile          |    2 +-
 lib/check_signature.c |   26 ++++++++++++++++++++++++++
 3 files changed, 29 insertions(+), 28 deletions(-)

diff --git a/include/linux/io.h b/include/linux/io.h
index 8423dd3..e3b2dda 100644
--- a/include/linux/io.h
+++ b/include/linux/io.h
@@ -63,32 +63,7 @@ void __iomem * devm_ioremap(struct device *dev, unsigned 
long offset,
 void __iomem * devm_ioremap_nocache(struct device *dev, unsigned long offset,
                                    unsigned long size);
 void devm_iounmap(struct device *dev, void __iomem *addr);
-
-/**
- *     check_signature         -       find BIOS signatures
- *     @io_addr: mmio address to check
- *     @signature:  signature block
- *     @length: length of signature
- *
- *     Perform a signature comparison with the mmio address io_addr. This
- *     address should have been obtained by ioremap.
- *     Returns 1 on a match.
- */
-
-static inline int check_signature(const volatile void __iomem *io_addr,
-       const unsigned char *signature, int length)
-{
-       int retval = 0;
-       do {
-               if (readb(io_addr) != *signature)
-                       goto out;
-               io_addr++;
-               signature++;
-               length--;
-       } while (length);
-       retval = 1;
-out:
-       return retval;
-}
+int check_signature(const volatile void __iomem *io_addr,
+                       const unsigned char *signature, int length);
 
 #endif /* _LINUX_IO_H */
diff --git a/lib/Makefile b/lib/Makefile
index d1b366b..d7a93ff 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -13,7 +13,7 @@ lib-$(CONFIG_SMP) += cpumask.o
 lib-y  += kobject.o kref.o kobject_uevent.o klist.o
 
 obj-y += div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
-        bust_spinlocks.o hexdump.o
+        bust_spinlocks.o hexdump.o check_signature.o
 
 ifeq ($(CONFIG_DEBUG_KOBJECT),y)
 CFLAGS_kobject.o += -DDEBUG
diff --git a/lib/check_signature.c b/lib/check_signature.c
new file mode 100644
index 0000000..fd6af19
--- /dev/null
+++ b/lib/check_signature.c
@@ -0,0 +1,26 @@
+#include <linux/io.h>
+#include <linux/module.h>
+
+/**
+ *     check_signature         -       find BIOS signatures
+ *     @io_addr: mmio address to check
+ *     @signature:  signature block
+ *     @length: length of signature
+ *
+ *     Perform a signature comparison with the mmio address io_addr. This
+ *     address should have been obtained by ioremap.
+ *     Returns 1 on a match.
+ */
+
+int check_signature(const volatile void __iomem *io_addr,
+                       const unsigned char *signature, int length)
+{
+       while (length--) {
+               if (readb(io_addr) != *signature)
+                       return 0;
+               io_addr++;
+               signature++;
+       }
+       return 1;
+}
+EXPORT_SYMBOL(check_signature);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to