mirror of
https://github.com/dynup/kpatch
synced 2024-12-28 16:22:04 +00:00
0bb5c106ef
Restructure kpatch's sysfs interface and mirror the sysfs tree after livepatch's sysfs layout. With the current sysfs layout, we cannot distinguish which object a function belongs to, and we cannot tell which modules/objects are patched. Therefore, restructure the kpatch sysfs tree such that module/object information is available. With the new layout, each patched object has its own directory, with each function being a subdirectory of its object. Implement this by embedding a kobject struct within the kpatch_module, kpatch_func, and kpatch_object structs and supplying their ktypes and kobject release methods. Before: /sys/kernel/kpatch └── patches └── <patch_module> ├── checksum ├── enabled └── functions ├── <function> # from <object1> │ ├── new_addr │ └── old_addr ├── <function> # from <object2> │ ├── new_addr │ └── old_addr └─── <function> # from <object3> ├── new_addr └── old_addr After: /sys/kernel/kpatch └── <patch_module> ├── <object1> │ └── <function,sympos> │ ├── new_addr │ └── old_addr ├── <object2> │ └── <function,sympos> │ ├── new_addr │ └── old_addr ├── checksum ├── enabled └── <object3> └── <function,sympos> ├── new_addr └── old_addr |
||
---|---|---|
.. | ||
doit-client.sh | ||
doit.sh | ||
Makefile | ||
patch | ||
README | ||
testmod_drv.c |
To test, run ./doit.sh from the current directory. To test on a remote system, set remote system using REMOTE in doit.sh. Then run ./doit.sh.