[linux kernel patchje] zelfgemaakte patch werkt niet...

Pagina: 1
Acties:

  • usr-local-dick
  • Registratie: September 2001
  • Niet online
Hoi

Ik wil om verschillende redenenen NU even niet een nieuwe 2.4.24 maken, dus wil ik mijn oude 2.4.23 tree patches voor de do_mremap() bug.
Nu heb ik in de 2.4.24 patch gezien dat dit het stuk is waar het om gaat:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
diff -urN linux-2.4.23/mm/mremap.c linux-2.4.24/mm/mremap.c
--- linux-2.4.23/mm/mremap.c    2003-08-25 04:44:44.000000000 -0700
+++ linux-2.4.24/mm/mremap.c    2004-01-05 05:53:56.000000000 -0800
@@ -241,6 +241,13 @@

                if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len)
                        goto out;
+               /*
+                * Allow new_len == 0 only if new_addr == addr
+                * to preserve truncation in place (that was working
+                * safe and some app may depend on it).
+                */
+               if (unlikely(!new_len && new_addr != addr))
+                       goto out;

                /* Check if the location we're moving into overlaps the
                 * old location at all, and fail if it does.

Als ik de code een beetje aanpas, zodat ie generieker wordt en niet naar 2.4.23 etc kijkt, dan hou ik dit over:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
diff -urN linux/mm/mremap.c linux/mm/mremap.c
--- linux/mm/mremap.c    2003-08-25 04:44:44.000000000 -0700
+++ linux/mm/mremap.c    2004-01-05 05:53:56.000000000 -0800
@@ -241,6 +241,13 @@

                if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len)
                        goto out;
+               /*
+                * Allow new_len == 0 only if new_addr == addr
+                * to preserve truncation in place (that was working
+                * safe and some app may depend on it).
+                */
+               if (unlikely(!new_len && new_addr != addr))
+                       goto out;

                /* Check if the location we're moving into overlaps the
                 * old location at all, and fail if it does.


Als ik deze patch wil draaien lukt dit niet :( :
samba:/opt/test# patch --verbose -p0 < adfasdf
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff -urN linux/mm/mremap.c linux/mm/mremap.c
|--- linux/mm/mremap.c 2003-08-25 04:44:44.000000000 -0700
|+++ linux/mm/mremap.c 2004-01-05 05:53:56.000000000 -0800
--------------------------
Patching file linux/mm/mremap.c using Plan A...
Hunk #1 FAILED at 241.
1 out of 1 hunk FAILED -- saving rejects to file linux/mm/mremap.c.rej
Hmm... Ignoring the trailing garbage.
done

Als ik dan is die reject file kijk, zie ik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
***************
*** 241,246 ****

                 if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len)
                         goto out;

                 /* Check if the location we're moving into overlaps the
                  * old location at all, and fail if it does.
--- 241,253 ----

                 if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len)
                         goto out;
+                /*
+                 * Allow new_len == 0 only if new_addr == addr
+                 * to preserve truncation in place (that was working
+                 * safe and some app may depend on it).
+                 */
+                if (unlikely(!new_len && new_addr != addr))
+                        goto out;

                 /* Check if the location we're moving into overlaps the
                  * old location at all, and fail if it does.


Wat is hier nou mis mee :?

  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 13:18
Waarom kun je jou 2.4.23 boom niet patchen naar 2.4.24 dan? De complete patch is maar een paar regels.

Als je toch met deze patch wil werken:

Wat gebeurt er als je met die bovenste patch in je /usr/src/linux gaat staan en patch -p1 -i depatchhierdus doet?

  • Wilke
  • Registratie: December 2000
  • Laatst online: 22-02 22:40
En aangezien het om slechts 5 regels ofzoiets gaat (eigenlijk slechts 2 waar echt code in staat): waarom open je niet gewoon die file en copy/paste je die twee regels er even met de hand in?

Het is niet alsof 'patch' verder nog magische dingen doet ofzo....

  • usr-local-dick
  • Registratie: September 2001
  • Niet online
Freak_NL schreef op 06 januari 2004 @ 15:26:
Waarom kun je jou 2.4.23 boom niet patchen naar 2.4.24 dan? De complete patch is maar een paar regels.

Als je toch met deze patch wil werken:

Wat gebeurt er als je met die bovenste patch in je /usr/src/linux gaat staan en patch -p1 -i depatchhierdus doet?
Omdat ik al een redelijk gepatchte tree had (debian + exec-shield) :)
Het hele probleem ligt aan het feit dat er nog geen debian sources van 2.4.24 zijn.
edit:
plz geen rant over wel/niet debianized kernelsourcetree


Maar dit alles doet niets af aan die error: het gaat erom dat er in een file 7 regels moeten worden toegevoegd, en dat lukt niet.
Dus of deze thread even door kan gaan over dat issue ;-)

Overigens is die patchfile meer voor de convenience, je kan die extra regels code ook met de hand in mremap.c plakken en dan hercompileren.

  • PolarWolf
  • Registratie: November 2001
  • Laatst online: 11-01 19:37

PolarWolf

Debian, of course.

usr-local-dick schreef op 06 januari 2004 @ 16:09:
[...]


Omdat ik al een redelijk gepatchte tree had (debian + exec-shield) :)
Het hele probleem ligt aan het feit dat er nog geen debian sources van 2.4.24 zijn.
edit:
plz geen rant over wel/niet debianized kernelsourcetree


Maar dit alles doet niets af aan die error: het gaat erom dat er in een file 7 regels moeten worden toegevoegd, en dat lukt niet.
Dus of deze thread even door kan gaan over dat issue ;-)

Overigens is die patchfile meer voor de convenience, je kan die extra regels code ook met de hand in mremap.c plakken en dan hercompileren.
Je geeft zelf al aan dat je al een gepatched kernel hebt. Zou het niet gewoon kunnen dat het stuk dat jij probeerd te patchen in de stock kernel.org kernel wel bestaat, maar in patch-hack van jou niet (meer), of in elk geval niet op dezelfde plaats?

Undernet #linux, Undernet #ipsec


  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 13:18
het gaat erom dat er in een file 7 regels moeten worden toegevoegd, en dat lukt niet.
7 regels toevoegen kun je ook met de hand wel toch? Wat is het probleem nou eigenlijk?

Vergelijk anders voor de grap jou mm/mremap.c eens met de mm/mremap.c van een vanille 2.4.23 kernel met diff. Als ze hetzelfde zijn kun je die patch gewoon gebruiken..

  • _JGC_
  • Registratie: Juli 2000
  • Nu online
Gewoon met de hand toevoegen. Moet gewoon lukken, zo moeilijk is het niet dat stukkie commentaar op te zoeken wat in de patch staat. Patch lezen is geen kunst, iedereen kan dat :P

Overigens is patch-2.4.24 zo'n miezerig klein patchje, dat ik slechts 1 reject had toen ik em over een 2.4.23-grsec-xfs tree heen haalde: het versienummer in de makefile kon ie niet aanpassen :P

  • Infern0
  • Registratie: September 2000
  • Laatst online: 23-01 09:14

Infern0

Hou die ontzettende rust!!

Paste het stukje in de kernel source, doe een diff en kijk en vergelijk met de orginele patch waarom het niet werkt, sla je twee vliegen in een klap :)

http://www.bsdfreaks.nl Home site: http://rob.lensen.nu /me was RobL


  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
Als het je alleen om de mremap bug gaat voldoet het om mremap.c uit 2.4.24 te pakken en te overschrijven in 2.4.23. Daarvan kun je dan je eigen diff maken, als dat nog nodig is. Ik heb het niet getest, maar naar wat ik heb gelezen zou dat moeten werken.

Everyone complains of his memory, no one of his judgement.

Pagina: 1