File tree Expand file tree Collapse file tree 1 file changed +13
-1
lines changed Expand file tree Collapse file tree 1 file changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -1545,6 +1545,17 @@ static int check_ftrace_location(struct kprobe *p)
1545
1545
return 0 ;
1546
1546
}
1547
1547
1548
+ static bool is_cfi_preamble_symbol (unsigned long addr )
1549
+ {
1550
+ char symbuf [KSYM_NAME_LEN ];
1551
+
1552
+ if (lookup_symbol_name (addr , symbuf ))
1553
+ return false;
1554
+
1555
+ return str_has_prefix ("__cfi_" , symbuf ) ||
1556
+ str_has_prefix ("__pfx_" , symbuf );
1557
+ }
1558
+
1548
1559
static int check_kprobe_address_safe (struct kprobe * p ,
1549
1560
struct module * * probed_mod )
1550
1561
{
@@ -1563,7 +1574,8 @@ static int check_kprobe_address_safe(struct kprobe *p,
1563
1574
within_kprobe_blacklist ((unsigned long ) p -> addr ) ||
1564
1575
jump_label_text_reserved (p -> addr , p -> addr ) ||
1565
1576
static_call_text_reserved (p -> addr , p -> addr ) ||
1566
- find_bug ((unsigned long )p -> addr )) {
1577
+ find_bug ((unsigned long )p -> addr ) ||
1578
+ is_cfi_preamble_symbol ((unsigned long )p -> addr )) {
1567
1579
ret = - EINVAL ;
1568
1580
goto out ;
1569
1581
}
You can’t perform that action at this time.
0 commit comments