Comments (9)
Hi @wardenjohn
- Why we don't include .data..read_mostly section changes? kpatch_verify_patchability() specifically looks for changes to any ".data" prefixed section (amongst others). Changes to data sections are not supported as kpatch can't safely apply those changes to a live system. For example, how to modify a static variable? There may be mutual exclusion issues, data type changes, etc.
- Why do we need kpatch_reorder_symbols()? kpatch-build generates a new elf output file comprised of original vs. patched object code differences. This new file may have altered section, relocations, symbol information, etc. This function sorts the symbols them as per ld linker (and probably ELF spec) expectations.
- How does kpatch-build use kernel struct sizes in special sections? Just look for the "group_size" variable across create-diff-object.c.
from kpatch.
Thank you joe @joe-lawrence !
I am still learning the techology of kpatch-build and still a long way to go.
Hoping can become a member of this community as fast as possable! :)
from kpatch.
@joe-lawrence I have some futher question for answer.
For answer 1, kpatch_verify_patchability() will make sure .data.* section will not be included. However, changed section is not selected for inclusion
is raise in this case. It seems that this section is changed but the include flag is not set.
It is not the situation that kpatch_verify_patchability not allow any data section change.
In my scenario, this section's flag is not set to be include even it is changed. Is that a bug?
from kpatch.
Hi @wardenjohn : can you (re)build this patch with kpatch-build -d
debugging option, then create and attach a tarball of the following files from ~/.kpatch (most of these should be under ~/.kpatch/tmp/...)
- kpatch-build.env
- Module.symvers
- ORIG.o
- PATCHED.o
- vmlinux.symtab
Seeing the input kpatch would be helpful as well if you can post that. (GitHub should let you attach files directly in an issue comment.) Thanks.
from kpatch.
Hi joe, @joe-lawrence
I will rebuild for a check. But I am not sure my organization if they allow me to up load the built object.
I need some time to check.
from kpatch.
@joe-lawrence Hi, bro!
I read the README.md of kpatch-build project and found that we can talk in web.libera chat. It very interesting if we can chat on line.
I join https://web.libera.chat/ under kpatch channel.
but found nobody in the channel chating.
Am I joined the wrong channel?
Thank you very much!
from kpatch.
We should probably remove this from the docs as I think most people have sunset IRC. I know I don't even have a client installed after the N-th chat protocol was adopted at work.
from kpatch.
@joe-lawrence I am afraid that there may be some difficulty for me to upload this file (and I found I loss that patch ... lol.. sorry, bro T_T) .
Can you tell me how to analysis this problem at the start? May be the next time I met this problem again, I can analysis it first and later submit some more useful information in github. If necessary, I can raise an other issuse.
Thank you , Joe !
from kpatch.
Can you tell me how to analysis this problem at the start?
If you can't share generated object or input kpatch code due to licensing reasons, then the next-best thing would be a minimal reproducer.
For example, with the kernel/sched/fair.c file, I would think changing this value would provoke the $SUBJECT error message:
static unsigned long __read_mostly max_load_balance_interval = HZ/10;
Of course, the root cause may not be as obvious, in which case, you might try abstracting your kpatch changes to simple nop()
calls. This would allow you to systematically search to see if there is a particular function that is driving the error (perhaps it references a ready-mostly data value.)
If neither of those approaches are successful, you could always run create-diff-object through the gdb debugger. (Hint, build with the --skip-cleanup option and source the ~/.kpatch/tmp/kpatch-build.env to export necessary kernel structure sizes.)
from kpatch.
Related Issues (20)
- Do we need more robust archeticture protection HOT 4
- kpatch-build: verify_patch_files might miss a parameter HOT 2
- ERROR in find_local_syms, couldn't find matching XXX local symbols in vmlinux symbol table HOT 14
- Can you add support for Rocky and Alma? HOT 1
- relocation with type R_X86_64_GOTPCREL is not supported HOT 5
- Arch Compile kpatch-git test failed HOT 4
- Regarding "statically allocated data" again HOT 2
- kpatch-build error when modifying an object file's only syscall
- nowhere to find the definition of klp_register_patch HOT 5
- x86 paravirt code uses alternatives v6.8+ HOT 1
- special-static.patch can fail to build on s390x / upstream v6.8 HOT 6
- CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY not supported on ppc64le HOT 6
- function __pfx_new_sync_read has no fentry/mcount call, unable to patch HOT 6
- Unchanged and unpatchable function moves from .text to .text.unlikely HOT 5
- Why did the kpatch-build script export the KPATCH-BUILD environment variable from the BUILD directory to the SOURCE directory? HOT 3
- CONFIG_WERROR=y and CONFIG_LD_ORPHAN_WARN_LEVEL="error" break kpatch-build HOT 2
- linux 6.9.0-rc6 can't find special struct paravirt_patch_site size HOT 6
- find_local_syms: 218: couldn't find matching cm.c local symbols in ib_mad symbol table HOT 5
- Kernel Warning: Unpatched return thunk in use. This should not happen! HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kpatch.