Lesen eines symbolischen Links im Kernel-Space

8

Ich schreibe ein LKM und muss herausfinden, wo ein bestimmter Symlink hinweist. Grundsätzlich brauche ich die Funktionalität des syscall readlinkat (oder readlink ) aber im Kernel-Space. Gibt es einen einfachen Weg, dies zu tun?

Die direkte Verwendung von readlinkat funktioniert bei mir nicht, ich bekomme immer EFAULT (ich vermute, das liegt daran, dass mein Puffer offensichtlich im Kernel-Speicher und nicht im User-Space ist).

    
St0rmi 09.11.2014, 16:03
quelle

1 Antwort

4

Erstens können Sie keine User-Space-Systemaufrufe ( readlinkat() oder readlink() ) direkt in Ihrem Kernel-Modul verwenden. Stattdessen müssen Sie die exportierte Funktion / das Symbol im Kernel-Bereich verwenden.

Als nächstes möchten Sie vielleicht in die struct inode_operations schauen, die für die Dateisystem, das Sie verwenden. Sehen Sie sich auch generic_readlink() an, die intern vfs_readlink() aufrufen.

    
askb 09.11.2014 16:18
quelle

Tags und Links