XArray: Fix infinite loop with entry at ULONG_MAX
[platform/kernel/linux-rpi.git] / lib / check_signature.c
1 // SPDX-License-Identifier: GPL-2.0
2 #include <linux/io.h>
3 #include <linux/export.h>
4
5 /**
6  *      check_signature         -       find BIOS signatures
7  *      @io_addr: mmio address to check
8  *      @signature:  signature block
9  *      @length: length of signature
10  *
11  *      Perform a signature comparison with the mmio address io_addr. This
12  *      address should have been obtained by ioremap.
13  *      Returns 1 on a match.
14  */
15
16 int check_signature(const volatile void __iomem *io_addr,
17                         const unsigned char *signature, int length)
18 {
19         while (length--) {
20                 if (readb(io_addr) != *signature)
21                         return 0;
22                 io_addr++;
23                 signature++;
24         }
25         return 1;
26 }
27 EXPORT_SYMBOL(check_signature);