漏洞信息
                                
                                    
                                        
                                        # RISC-V FTrace 电源关闭漏洞
## 概述
Linux 内核 RISC-V 架构中,ftrace 功能存在可能导致系统 panic 的问题。漏洞已在修复版本中解决。
## 影响版本
Linux 内核(RISC-V 架构)在未修复该问题的版本中受到影响。
## 细节
- RISC-V 架构中使用 `AUIPC` + `JALR` 指令对跳转到超过 4K 地址的目标。
- 如果在 `auipc` 指令执行后、`jalr` 执行前任务被抢占(preempted),且在抢占期间 ftrace 被修改,则:
  - `jalr` 使用了旧的 `auipc` 前半部分(XLEN:12 位)。
  - 混合使用了更新后的地址低 12 位(11:0)。
- 由此导致间接跳转到错误地址,可能触发系统 panic。
## 影响
系统可能因错误地址跳转导致 panic,造成崩溃或不可预期的内核行为。
                                        
                                    
                                 
                                提示
                                
                                    尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
                                    
                                    神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
                                    
神龙祝您一切顺利!
                                
                            
                            
                         
                    
                
                    
                    
                        
                            
                            
                                
    漏洞标题
    
        
            riscv: ftrace: Fixup panic by disabling preemption
        
        
    
                                
    漏洞描述信息
    
        
            In the Linux kernel, the following vulnerability has been resolved:
riscv: ftrace: Fixup panic by disabling preemption
In RISCV, we must use an AUIPC + JALR pair to encode an immediate,
forming a jump that jumps to an address over 4K. This may cause errors
if we want to enable kernel preemption and remove dependency from
patching code with stop_machine(). For example, if a task was switched
out on auipc. And, if we changed the ftrace function before it was
switched back, then it would jump to an address that has updated 11:0
bits mixing with previous XLEN:12 part.
p: patched area performed by dynamic ftrace
ftrace_prologue:
p|      REG_S   ra, -SZREG(sp)
p|      auipc   ra, 0x? ------------> preempted
					...
				change ftrace function
					...
p|      jalr    -?(ra) <------------- switched back
p|      REG_L   ra, -SZREG(sp)
func:
	xxx
	ret
        
        
    
                                
    CVSS信息
    
        
            N/A
        
        
    
                                
    漏洞类别
    
        
            N/A
        
        
    
                            
                         
                    
                
                    
                    
                        
                            
                            
                                
    漏洞标题
    
        
            Linux kernel 安全漏洞
        
        
    
                                
    漏洞描述信息
    
        
            Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于未禁用抢占,可能导致内核恐慌。
        
        
    
                                
    CVSS信息
    
        
            N/A
        
        
    
                                
    漏洞类别
    
        
            其他