Dear kernelnewbies subscribers, I was reading the kernel source tree in an attempt to understand how the chroot syscall workes. (I was using the linux-6.17-rc3 tarball from kernel.org.) At line 1429 of the fs/open.c file, inside the definition of the do_sys_openat2() function getname() is called. I am having trouble finding its definition. In particular, $ grep -rn 'getname' fs doesn't return a line like 'struct file *getname (args)' or similar, as I would expect. Can someone point me to the file/line where getname() is defined? Thank you, Vulturus
On Fri, Aug 29, 2025 at 2:43 PM Vulturus <vulturus@vulturus.xyz> wrote:
Dear kernelnewbies subscribers,
I was reading the kernel source tree in an attempt to understand how the chroot syscall workes. (I was using the linux-6.17-rc3 tarball from kernel.org.)
At line 1429 of the fs/open.c file, inside the definition of the do_sys_openat2() function getname() is called.
I am having trouble finding its definition.
In particular, $ grep -rn 'getname' fs doesn't return a line like 'struct file *getname (args)' or similar, as I would expect.
Can someone point me to the file/line where getname() is defined?
Thank you, Vulturus
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Looks like it's an inline function defined in a header in /include/linux/fs.h: https://elixir.bootlin.com/linux/v6.17-rc3/source/include/linux/fs.h#L2916 Bootlin is a fantastic tool to find where things are defined in the kernel. -Daniel
On Fri, Aug 29, 2025 at 03:19:59PM -0400, Dan Bokser wrote:
On Fri, Aug 29, 2025 at 2:43 PM Vulturus <vulturus@vulturus.xyz> wrote:
Dear kernelnewbies subscribers,
I was reading the kernel source tree in an attempt to understand how the chroot syscall workes. (I was using the linux-6.17-rc3 tarball from kernel.org.)
At line 1429 of the fs/open.c file, inside the definition of the do_sys_openat2() function getname() is called.
I am having trouble finding its definition.
In particular, $ grep -rn 'getname' fs doesn't return a line like 'struct file *getname (args)' or similar, as I would expect.
Can someone point me to the file/line where getname() is defined?
See include/linux/fs.h The search directory scope was too high, not in fs. You may find cscope, ctags, or bootlin[1] useful. [1] https://elixir.bootlin.com/linux/v6.17-rc3/source/include/linux/fs.h#L2916
Thank you, Vulturus
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Looks like it's an inline function defined in a header in /include/linux/fs.h: https://elixir.bootlin.com/linux/v6.17-rc3/source/include/linux/fs.h#L2916
Bootlin is a fantastic tool to find where things are defined in the kernel.
-Daniel
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
On 8/29/25 2:43 PM, Vulturus wrote:
Dear kernelnewbies subscribers,
I was reading the kernel source tree in an attempt to understand how the chroot syscall workes. (I was using the linux-6.17-rc3 tarball from kernel.org.)
At line 1429 of the fs/open.c file, inside the definition of the do_sys_openat2() function getname() is called.
I am having trouble finding its definition.
In particular, $ grep -rn 'getname' fs doesn't return a line like 'struct file *getname (args)' or similar, as I would expect.
Can someone point me to the file/line where getname() is defined?
You can use GNU Global [1] to find definition and references. $ make gtags $ global -x getname getname 2916 include/linux/fs.h static inline struct filename *getname(const char __user *name) $ global -xr getname getname 484 crypto/af_alg.c .getname = sock_no_getname, ... <snip> [1] https://www.gnu.org/software/global/
Thank you, Vulturus
participants (4)
-
Alison Schofield -
Dan Bokser -
Partha P. Mukherjee -
Vulturus