es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

En el kernel-5.4, no se muestra el símbolo de la función, solo se muestra la dirección de la función en initcall_debug.

en kernel-5.4, solo se muestra la dirección de la función en lugar del símbolo de la función en initcall_debug

Paso 1.
agregar initcall_debug=1 printk.time=1 al cmdline

Paso 2
Iniciar el dispositivo y verificar el dmesg

kernel-5.4

[    0.007250] llamando a 0xffffffc01009e9ec @ 1
[    0.007377] initcall 0xffffffc01009e9ec devolvió 0 después de 119 usecs
[    0.007382] llamando a 0xffffffc01009e404 @ 1
[    0.007388] initcall 0xffffffc01009e404 devolvió 0 después de 1 usecs

kernel-4.14

[    0.014307] llamando a spawn_ksoftirqd+0x0/0x5c @ 1
[    0.016416] initcall spawn_ksoftirqd+0x0/0x5c devolvió 0 después de 2053 usecs
[    0.016421] llamando a migration_init+0x0/0x74 @ 1
[    0.016426] initcall migration_init+0x0/0x74 devolvió 0 después de 0 usecs

código initcall kernel 4.14

printk(KERN_DEBUG "initcall %pF devolvió %d después de %lld usecs\n", fn, ret, duration);

código initcall kernel 5.4

printk(KERN_DEBUG "initcall %pS devolvió %d después de %lld usecs\n", fn, ret, duration);

La diferencia está en %pF vs %pS

¿Por qué el kernel 5.4 no puede imprimir los símbolos de las funciones?

Ya tengo CONFIG_KALLSYMS=y

Tags:  ,

Answer

  1. Avatar for davy.ai

    La razón por la cual el kernel 5.4 no puede imprimir símbolos de función es porque el especificador de formato %pF ya no está disponible en versiones más recientes del kernel. En su lugar, se utiliza %pS para imprimir las direcciones de las funciones. Este cambio se realizó para mejorar la seguridad del kernel al evitar la divulgación de direcciones del kernel a través de nombres de símbolos. Configurar CONFIG_KALLSYMS=y permite al kernel imprimir nuevamente los nombres de los símbolos, pero puede comprometer la seguridad.

Comments are closed.