opt.c (94817983fb2ccd1869ed0c5a763317a45283a272) opt.c (868a6fc0ca2407622d2833adefe1c4d284766c4c)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Kernel Probes Jump Optimization (Optprobes)
4 *
5 * Copyright (C) IBM Corporation, 2002, 2004
6 * Copyright (C) Hitachi Ltd., 2012
7 */
8#include <linux/kprobes.h>

--- 32 unchanged lines hidden (view full) ---

41 long offs;
42 int i;
43
44 for (i = 0; i < JMP32_INSN_SIZE; i++) {
45 kp = get_kprobe((void *)addr - i);
46 /* This function only handles jump-optimized kprobe */
47 if (kp && kprobe_optimized(kp)) {
48 op = container_of(kp, struct optimized_kprobe, kp);
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Kernel Probes Jump Optimization (Optprobes)
4 *
5 * Copyright (C) IBM Corporation, 2002, 2004
6 * Copyright (C) Hitachi Ltd., 2012
7 */
8#include <linux/kprobes.h>

--- 32 unchanged lines hidden (view full) ---

41 long offs;
42 int i;
43
44 for (i = 0; i < JMP32_INSN_SIZE; i++) {
45 kp = get_kprobe((void *)addr - i);
46 /* This function only handles jump-optimized kprobe */
47 if (kp && kprobe_optimized(kp)) {
48 op = container_of(kp, struct optimized_kprobe, kp);
49 /* If op->list is not empty, op is under optimizing */
50 if (list_empty(&op->list))
49 /* If op is optimized or under unoptimizing */
50 if (list_empty(&op->list) || optprobe_queued_unopt(op))
51 goto found;
52 }
53 }
54
55 return addr;
56found:
57 /*
58 * If the kprobe can be optimized, original bytes which can be

--- 505 unchanged lines hidden ---
51 goto found;
52 }
53 }
54
55 return addr;
56found:
57 /*
58 * If the kprobe can be optimized, original bytes which can be

--- 505 unchanged lines hidden ---