162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#include <linux/linkage.h> 462306a36Sopenharmony_ci#include <linux/error-injection.h> 562306a36Sopenharmony_ci#include <linux/kprobes.h> 662306a36Sopenharmony_ci#include <linux/objtool.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciasmlinkage void just_return_func(void); 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ciasm( 1162306a36Sopenharmony_ci ".text\n" 1262306a36Sopenharmony_ci ".type just_return_func, @function\n" 1362306a36Sopenharmony_ci ".globl just_return_func\n" 1462306a36Sopenharmony_ci ASM_FUNC_ALIGN 1562306a36Sopenharmony_ci "just_return_func:\n" 1662306a36Sopenharmony_ci ANNOTATE_NOENDBR 1762306a36Sopenharmony_ci ASM_RET 1862306a36Sopenharmony_ci ".size just_return_func, .-just_return_func\n" 1962306a36Sopenharmony_ci); 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_civoid override_function_with_return(struct pt_regs *regs) 2262306a36Sopenharmony_ci{ 2362306a36Sopenharmony_ci regs->ip = (unsigned long)&just_return_func; 2462306a36Sopenharmony_ci} 2562306a36Sopenharmony_ciNOKPROBE_SYMBOL(override_function_with_return); 26