Code Monkey home page Code Monkey logo

Comments (9)

joe-lawrence avatar joe-lawrence commented on August 19, 2024

Hi @wardenjohn

  1. 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.
  2. 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.
  3. 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.

wardenjohn avatar wardenjohn commented on August 19, 2024

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.

wardenjohn avatar wardenjohn commented on August 19, 2024

@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.

joe-lawrence avatar joe-lawrence commented on August 19, 2024

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.

wardenjohn avatar wardenjohn commented on August 19, 2024

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.

wardenjohn avatar wardenjohn commented on August 19, 2024

@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.
image
but found nobody in the channel chating.
Am I joined the wrong channel?
Thank you very much!

from kpatch.

joe-lawrence avatar joe-lawrence commented on August 19, 2024

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.

wardenjohn avatar wardenjohn commented on August 19, 2024

@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.

joe-lawrence avatar joe-lawrence commented on August 19, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.