summaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/relocate.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2021-02-15 09:06:39 +0100
committerTakashi Iwai <tiwai@suse.de>2021-02-15 09:07:01 +0100
commitde1528ee7cb7c161444dadbc971d050bebb5cbe7 (patch)
treea1f53cd279966802de097c0f0f6625b49e6903f1 /arch/mips/kernel/relocate.c
parentALSA: hda: Add another CometLake-H PCI ID (diff)
parentALSA: usb-audio: Add implicit fb quirk for BOSS GP-10 (diff)
downloadlinux-de1528ee7cb7c161444dadbc971d050bebb5cbe7.tar.xz
linux-de1528ee7cb7c161444dadbc971d050bebb5cbe7.zip
Merge branch 'for-next' into for-linus
Unification of 5.12-devel branches. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'arch/mips/kernel/relocate.c')
-rw-r--r--arch/mips/kernel/relocate.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/mips/kernel/relocate.c b/arch/mips/kernel/relocate.c
index 47aeb3350a76..0e365b7c742d 100644
--- a/arch/mips/kernel/relocate.c
+++ b/arch/mips/kernel/relocate.c
@@ -187,8 +187,14 @@ static int __init relocate_exception_table(long offset)
static inline __init unsigned long rotate_xor(unsigned long hash,
const void *area, size_t size)
{
- size_t i;
- unsigned long *ptr = (unsigned long *)area;
+ const typeof(hash) *ptr = PTR_ALIGN(area, sizeof(hash));
+ size_t diff, i;
+
+ diff = (void *)ptr - area;
+ if (unlikely(size < diff + sizeof(hash)))
+ return hash;
+
+ size = ALIGN_DOWN(size - diff, sizeof(hash));
for (i = 0; i < size / sizeof(hash); i++) {
/* Rotate by odd number of bits and XOR. */