4040#include <linux/ftrace.h>
4141#include <linux/hashtable.h>
4242#include <linux/hardirq.h>
43- #include <linux/uaccess.h>
4443#include <asm/stacktrace.h>
4544#include <asm/cacheflush.h>
4645#include "kpatch.h"
@@ -425,10 +424,6 @@ int kpatch_register(struct kpatch_module *kpmod, bool replace)
425424 int ret , i ;
426425 struct kpatch_func * funcs , * func ;
427426 int num_funcs = kpmod -> patches_nr ;
428- struct kpatch_dynrela * dynrela ;
429- void * loc ;
430- u64 val ;
431- int size ;
432427
433428 if (!kpmod -> mod || !kpmod -> patches || !num_funcs )
434429 return - EINVAL ;
@@ -453,34 +448,6 @@ int kpatch_register(struct kpatch_module *kpmod, bool replace)
453448 goto err_up ;
454449 }
455450
456- for (i = 0 ; i < kpmod -> dynrelas_nr ; i ++ ) {
457- dynrela = & kpmod -> dynrelas [i ];
458- switch (dynrela -> type ) {
459- case R_X86_64_PC32 :
460- loc = (void * )dynrela -> dest ;
461- val = (u32 )(dynrela -> src - dynrela -> dest );
462- size = 4 ;
463- break ;
464- case R_X86_64_32S :
465- loc = (void * )dynrela -> dest ;
466- val = (s32 )dynrela -> src ;
467- size = 4 ;
468- break ;
469- default :
470- printk ("unsupported rela type %ld for "
471- "0x%lx <- 0x%lx at index %d\n" ,
472- dynrela -> type , dynrela -> dest ,
473- dynrela -> src , i );
474- ret = - EINVAL ;
475- goto err_put ;
476- }
477- set_memory_rw ((unsigned long )loc & PAGE_MASK , 1 );
478- ret = probe_kernel_write (loc , & val , size );
479- set_memory_ro ((unsigned long )loc & PAGE_MASK , 1 );
480- if (ret )
481- goto err_put ;
482- }
483-
484451 for (i = 0 ; i < num_funcs ; i ++ ) {
485452 func = & funcs [i ];
486453
@@ -597,7 +564,6 @@ int kpatch_register(struct kpatch_module *kpmod, bool replace)
597564 kpatch_num_registered -- ;
598565err_rollback :
599566 kpatch_remove_funcs_from_filter (funcs , num_funcs );
600- err_put :
601567 module_put (kpmod -> mod );
602568err_up :
603569 up (& kpatch_mutex );
0 commit comments