Re: WARNING: fs/proc/generic.c:173 __xlate_proc_name

Bartosz Golaszewski
2024-02-12T14:11:55Z

On Mon, Feb 12, 2024 at 2:47 PM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
>
> Hi Linus,
>
> On Mon, Feb 12, 2024 at 2:35 PM Linus Walleij <linus.walleij@linaro.org> wrote:
> > looping in Geert becaus I think he wants to look into this!
>
> Oh no ;-)
>
> > On Sat, Feb 10, 2024 at 11:06 AM Stefan Wahren <wahrenst@gmx.net> wrote:
> > > we are using libgpiod-2.0.1 with Linux 6.1.49 on our Tarragon hardware
> > > platform. Recently we implemented an application which waits for GPIO
> > > interrupts and we were able to trigger a warning by naming the owner of
> > > the GPIO as "R1/S1":
> > >
> > > WARNING: CPU: 0 PID: 429 at fs/proc/generic.c:173
> > > __xlate_proc_name+0x78/0x98 name 'R1/S1'
> > > CPU: 0 PID: 429 Comm: cb_tarragon_dri Not tainted
> > > 6.1.49-00019-g9dbc76303a17 #147
> > > Hardware name: Freescale i.MX6 Ultralite (Device Tree)
> > > unwind_backtrace from show_stack+0x10/0x14
> > > show_stack from dump_stack_lvl+0x24/0x2c
> > > dump_stack_lvl from __warn+0x74/0xbc
> > > __warn from warn_slowpath_fmt+0xc8/0x120
> > > warn_slowpath_fmt from __xlate_proc_name+0x78/0x98
> > > __xlate_proc_name from __proc_create+0x3c/0x284
> > > __proc_create from _proc_mkdir+0x2c/0x70
> > > _proc_mkdir from proc_mkdir_data+0x10/0x18
> > > proc_mkdir_data from register_handler_proc+0xc8/0x118
> > > register_handler_proc from __setup_irq+0x554/0x664
> > > __setup_irq from request_threaded_irq+0xac/0x13c
> > > request_threaded_irq from edge_detector_setup+0xc0/0x1f8
> > > edge_detector_setup from linereq_create+0x30c/0x384
> > > linereq_create from vfs_ioctl+0x20/0x38
> > > vfs_ioctl from sys_ioctl+0xbc/0x8b0
> > > sys_ioctl from ret_fast_syscall+0x0/0x54
> > > Exception stack(0xe0b61fa8 to 0xe0b61ff0)
> > > 1fa0: 01b019b8 01a9f428 0000000d c250b407 beeae888
> > > beeae880
> > > 1fc0: 01b019b8 01a9f428 01af7e40 00000036 beeaeb88 beeaeb80 beeaeb58
> > > beeaeb60
> > > 1fe0: 00000036 beeae868 b6a88569 b6a01ae6
> > > ---[ end trace 0000000000000000 ]---
> > >
> > > I'm not sure where this should be fixed.
>
> Any names ending up in sysfs cannot contain a slash?

It's actually procfs. Every irq has an entry under /proc/irq/xyz/
containing a directory named after the name of the interrupt. In this
case the path of the directory would have been /proc/irq/xyz/R1/S1 but
of course this wouldn't work. Should we replace every `/` in GPIO line
names with `:` for interrupts?

Bart

>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds