@@ -1771,38 +1771,40 @@ unsigned long __weak arch_deref_entry_point(void *entry)
1771
1771
1772
1772
int register_jprobes (struct jprobe * * jps , int num )
1773
1773
{
1774
- struct jprobe * jp ;
1775
1774
int ret = 0 , i ;
1776
1775
1777
1776
if (num <= 0 )
1778
1777
return - EINVAL ;
1778
+
1779
1779
for (i = 0 ; i < num ; i ++ ) {
1780
- unsigned long addr , offset ;
1781
- jp = jps [i ];
1782
- addr = arch_deref_entry_point (jp -> entry );
1783
-
1784
- /* Verify probepoint is a function entry point */
1785
- if (kallsyms_lookup_size_offset (addr , NULL , & offset ) &&
1786
- offset == 0 ) {
1787
- jp -> kp .pre_handler = setjmp_pre_handler ;
1788
- jp -> kp .break_handler = longjmp_break_handler ;
1789
- ret = register_kprobe (& jp -> kp );
1790
- } else
1791
- ret = - EINVAL ;
1780
+ ret = register_jprobe (jps [i ]);
1792
1781
1793
1782
if (ret < 0 ) {
1794
1783
if (i > 0 )
1795
1784
unregister_jprobes (jps , i );
1796
1785
break ;
1797
1786
}
1798
1787
}
1788
+
1799
1789
return ret ;
1800
1790
}
1801
1791
EXPORT_SYMBOL_GPL (register_jprobes );
1802
1792
1803
1793
int register_jprobe (struct jprobe * jp )
1804
1794
{
1805
- return register_jprobes (& jp , 1 );
1795
+ unsigned long addr , offset ;
1796
+ struct kprobe * kp = & jp -> kp ;
1797
+
1798
+ /* Verify probepoint is a function entry point */
1799
+ addr = arch_deref_entry_point (jp -> entry );
1800
+
1801
+ if (kallsyms_lookup_size_offset (addr , NULL , & offset ) && offset == 0 ) {
1802
+ kp -> pre_handler = setjmp_pre_handler ;
1803
+ kp -> break_handler = longjmp_break_handler ;
1804
+ return register_kprobe (kp );
1805
+ }
1806
+
1807
+ return - EINVAL ;
1806
1808
}
1807
1809
EXPORT_SYMBOL_GPL (register_jprobe );
1808
1810
0 commit comments