Parche de kernel de Linux y tree fuente de desarrollo

Estamos utilizando linux3.12 y su controller led tiene un error que se corrigió en una versión posterior de Linux. Vemos ese cambio de controller en Linux 3.15 ver Referencia cruzada de Linux

Ahora mi pregunta es ¿cómo puedo encontrar un parche que haya inducido este cambio?

Otra pregunta es ¿cómo puedo get acceso al tree de código fuente de desarrollo, por ejemplo kernel-3.14.18?

¿Cómo puedo encontrar un parche que indujo este cambio?

Use cgit, vaya aquí y click tree . Navegue hasta el file que está buscando y luego click el logging . A continuación, puede ver los cambios en el file.

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/drivers/leds/led-core.c

Para download las fonts del kernel de Linux, vaya a kernel.org y elija su versión.

El tree de desarrollo inestable está aquí: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/

get la fuente del kernel

Clona el tree kernel estable:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 

Cambiar a eso:

 cd linux-stable 

Pagar una label donde se solucionó el error:

 git checkout v3.15 

Ya conoces el file que buscas drivers/leds/led-core.c y donde el error está reparado (3.15) y está roto (3.12) por lo que hay algunas maneras en que puedes continuar desde aquí.

culpa

Puedes usar los git blame drivers/leds/led-core.c pero encuentro esta vista desorderada.

Prefiero tig , una interfaz basada en curses para git, así que solo:

 tig blame drivers/leds/led-core.c 

y ve cada línea del file y esas confirmaciones de forma interactiva. Puede upload y bajar con las teclas de flecha, y entrar en un commit con Enter . Salir con q .

Puede ver el parche al que se ha vinculado en LXR en las líneas 42-46:

 2014-02-04 00:11 Stefan Sørensen 8d82fef /* never on - just set to off */ 2014-02-04 00:11 Stefan Sørensen 8d82fef if (!delay_on) { 2014-02-04 00:11 Stefan Sørensen 8d82fef __led_set_brightness(led_cdev, LED_OFF); 2012-03-23 15:02 Bryan Wu a403d93 return; 2014-02-04 00:11 Stefan Sørensen 8d82fef } 

Entonces estás buscando 8d82fef . Presiona Enter sobre cualquiera de esas líneas y abrirás el parche.

Esto es mucho más útil para files más grandes con muchos parches recientes.

Iniciar session

Necesita un range de dates, por lo que al search en el git log de git log de las tags "buena" y "mala", las fusiones 3.15 y 3.12 fueron:

 commit 1860e379875dfe7271c649058aeddffe5afd9d0d Author: Linus Torvalds <torvalds@linux-foundation.org> Date: Sun Jun 8 11:19:54 2014 -0700 Linux 3.15 

y

 commit 5e01dc7b26d9f24f39abace5da98ccbd6a5ceb52 Author: Linus Torvalds <torvalds@linux-foundation.org> Date: Sun Nov 3 15:41:51 2013 -0800 Linux 3.12 

Entonces, cualquier cosa entre el 2 de noviembre de 2013 y el 8 de junio de 2014 es tu parche.

Mire en el logging del file en cuestión:

 git log drivers/leds/led-core.c 

El único parche que coincide con este range de dates es el último:

 commit 8d82fef8bbee588d071372eb02439d2053b4bfe4 Author: Stefan Sørensen <stefan.sorensen@spectralink.com> Date: Tue Feb 4 00:11:42 2014 -0800 leds: Turn off led if blinking is disabled 

el parche

Ahora que ha usado cualquiera de esos methods para encontrar la confirmación que corrige su problema, obtenga el parche de la confirmación, en comparación con su antecesor, con:

 git diff 8d82fef8^ 8d82fef8 drivers/leds/led-core.c 

Puede canalizar esto a un file si lo desea:

 git diff 8d82fef8^ 8d82fef8 drivers/leds/led-core.c > led-blinking-fix.patch 

Ahora tiene un parche para aplicar a su tree de kernel interno.