Patch "RISC-V: hwprobe: Fix vDSO SIGSEGV" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    RISC-V: hwprobe: Fix vDSO SIGSEGV

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     risc-v-hwprobe-fix-vdso-sigsegv.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 9efd382baf27f99b5b34e08c126475a0ba0aca95
Author: Andrew Jones <ajones@xxxxxxxxxxxxxxxx>
Date:   Tue Oct 10 18:51:02 2023 +0200

    RISC-V: hwprobe: Fix vDSO SIGSEGV
    
    [ Upstream commit e1c05b3bf80f829ced464bdca90f1dfa96e8d251 ]
    
    A hwprobe pair key is signed, but the hwprobe vDSO function was
    only checking that the upper bound was valid. In order to help
    avoid this type of problem in the future, and in anticipation of
    this check becoming more complicated with sparse keys, introduce
    and use a "key is valid" predicate function for the check.
    
    Fixes: aa5af0aa90ba ("RISC-V: Add hwprobe vDSO function and data")
    Signed-off-by: Andrew Jones <ajones@xxxxxxxxxxxxxxxx>
    Reviewed-by: Evan Green <evan@xxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20231010165101.14942-2-ajones@xxxxxxxxxxxxxxxx
    Signed-off-by: Palmer Dabbelt <palmer@xxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/riscv/include/asm/hwprobe.h b/arch/riscv/include/asm/hwprobe.h
index 78936f4ff5133..7cad513538d8d 100644
--- a/arch/riscv/include/asm/hwprobe.h
+++ b/arch/riscv/include/asm/hwprobe.h
@@ -10,4 +10,9 @@
 
 #define RISCV_HWPROBE_MAX_KEY 5
 
+static inline bool riscv_hwprobe_key_is_valid(__s64 key)
+{
+	return key >= 0 && key <= RISCV_HWPROBE_MAX_KEY;
+}
+
 #endif
diff --git a/arch/riscv/kernel/vdso/hwprobe.c b/arch/riscv/kernel/vdso/hwprobe.c
index d40bec6ac0786..cadf725ef7983 100644
--- a/arch/riscv/kernel/vdso/hwprobe.c
+++ b/arch/riscv/kernel/vdso/hwprobe.c
@@ -37,7 +37,7 @@ int __vdso_riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
 
 	/* This is something we can handle, fill out the pairs. */
 	while (p < end) {
-		if (p->key <= RISCV_HWPROBE_MAX_KEY) {
+		if (riscv_hwprobe_key_is_valid(p->key)) {
 			p->value = avd->all_cpu_hwprobe_values[p->key];
 
 		} else {



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux