lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 9 Nov 2016 11:00:10 -0500
From:   Joe Lawrence <joe.lawrence@...hat.com>
To:     "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Cc:     Sudip Mukherjee <sudip.mukherjee@...ethink.co.uk>
Subject: [ppdev] sysfs warning on qemu boot

Hi Sudip,

I hit a sysfs_warn_dup inside QEMU running 4.9.0-rc4 (I suspect earlier
versions as well, but this is the first upstream I've run in a while).
This warning looks like something the kernel test robot ran into a few
months ago:

  http://marc.info/?t=147267773300003&r=1&w=2

I'm running CentOS7 inside QEMU with the following options:

  qemu-system-x86_64 -smp 4 -m 8192 \
    -drive file=centos7.qcow2,cache=none,if=virtio \
    -usbdevice tablet -enable-kvm -monitor stdio \
    -parallel /dev/null -redir tcp:2222::22 \
    -serial file:serial.out

a kernel with these options:

  % grep PARPORT .config
  CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
  CONFIG_PARPORT=m
  CONFIG_PARPORT_PC=m
  # CONFIG_PARPORT_SERIAL is not set
  # CONFIG_PARPORT_PC_FIFO is not set
  # CONFIG_PARPORT_PC_SUPERIO is not set
  # CONFIG_PARPORT_GSC is not set
  # CONFIG_PARPORT_AX88796 is not set
  CONFIG_PARPORT_1284=y
  # CONFIG_I2C_PARPORT is not set
  # CONFIG_I2C_PARPORT_LIGHT is not set

and I see the following warning on boot:

  ppdev: user-space parallel port driver
  ------------[ cut here ]------------
  WARNING: CPU: 2 PID: 581 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x64/0x80
  sysfs: cannot create duplicate filename '/devices/pnp0/00:04/ppdev/parport0'
  Modules linked in: ppdev sg parport_pc(+) parport pcspkr i2c_piix4 ip_tables xfs libcrc32c sr_mod cdrom ata_generic pata_acpi cirrus drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm virtio_blk e1000 virtio_pci ata_piix virtio_ring i2c_core libata virtio serio_raw floppy dm_mirror dm_region_hash dm_log dm_mod
  CPU: 2 PID: 581 Comm: systemd-udevd Not tainted 4.9.0-rc4+ #1
  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.5.1 01/01/2011
   ffffc900014c76f8 ffffffff81351b2f ffffc900014c7748 0000000000000000
   ffffc900014c7738 ffffffff8108bab1 0000001f00001000 ffff8802280bc548
   ffff88022c290c68 ffff880225c98398 ffff88022d834bd8 0000000006300000
  Call Trace:
   [<ffffffff81351b2f>] dump_stack+0x63/0x84
   [<ffffffff8108bab1>] __warn+0xd1/0xf0
   [<ffffffff8108bb2f>] warn_slowpath_fmt+0x5f/0x80
   [<ffffffff812a3350>] ? kernfs_path_from_node+0x50/0x60
   [<ffffffff812a6b44>] sysfs_warn_dup+0x64/0x80
   [<ffffffff812a6c2e>] sysfs_create_dir_ns+0x7e/0x90
   [<ffffffff81354ad2>] kobject_add_internal+0xa2/0x320
   [<ffffffff8148ff33>] ? device_private_init+0x23/0x70
   [<ffffffff81354f85>] kobject_add+0x75/0xd0
   [<ffffffff816d8002>] ? mutex_lock+0x12/0x2f
   [<ffffffff81490099>] device_add+0x119/0x610
   [<ffffffff81490788>] device_create_groups_vargs+0xd8/0x100
   [<ffffffffa0316090>] ? dead_read+0x10/0x10 [parport]
   [<ffffffff81490821>] device_create+0x51/0x70
   [<ffffffff811fd5a1>] ? kfree+0x121/0x170
   [<ffffffff816ccf60>] ? klist_next+0x20/0xf0
   [<ffffffffa03230b4>] pp_attach+0x34/0x40 [ppdev]
   [<ffffffffa03160a7>] driver_check+0x17/0x20 [parport]
   [<ffffffff814913e8>] bus_for_each_drv+0x68/0xb0
   [<ffffffffa03162b9>] attach_driver_chain+0x59/0x60 [parport]
   [<ffffffffa0316720>] parport_announce_port+0xc0/0x110 [parport]
   [<ffffffffa032ae7c>] parport_pc_probe_port+0x70c/0xb20 [parport_pc]
   [<ffffffff812a460a>] ? kernfs_activate+0x7a/0xe0
   [<ffffffff8148f6cc>] ? _dev_info+0x6c/0x90
   [<ffffffffa032bd95>] parport_pc_pnp_probe+0x145/0x1e0 [parport_pc]
   [<ffffffffa032bc50>] ? sio_via_probe+0x430/0x430 [parport_pc]
   [<ffffffff8140c8c1>] pnp_device_probe+0x61/0xc0
   [<ffffffff814936e7>] driver_probe_device+0x227/0x440
   [<ffffffff814939dd>] __driver_attach+0xdd/0xe0
   [<ffffffff81493900>] ? driver_probe_device+0x440/0x440
   [<ffffffff8149130c>] bus_for_each_dev+0x6c/0xc0
   [<ffffffff81492fae>] driver_attach+0x1e/0x20
   [<ffffffff814928c5>] bus_add_driver+0x45/0x270
   [<ffffffff81494450>] driver_register+0x60/0xe0
   [<ffffffff8140c710>] pnp_register_driver+0x20/0x30
   [<ffffffffa0332398>] parport_pc_init+0x2b5/0xf1d [parport_pc]
   [<ffffffffa03320e3>] ? parport_parse_param.constprop.15+0xe3/0xe3 [parport_pc]
   [<ffffffff81002190>] do_one_initcall+0x50/0x190
   [<ffffffff811958ce>] ? do_init_module+0x27/0x1f1
   [<ffffffff811fc3bc>] ? kmem_cache_alloc_trace+0x16c/0x1b0
   [<ffffffff81195907>] do_init_module+0x60/0x1f1
   [<ffffffff81116e7b>] load_module+0x15ab/0x1aa0
   [<ffffffff81113810>] ? __symbol_put+0x60/0x60
   [<ffffffff812f7b1d>] ? ima_post_read_file+0x3d/0x80
   [<ffffffff812d39eb>] ? security_kernel_post_read_file+0x6b/0x80
   [<ffffffff81117586>] SYSC_finit_module+0xa6/0xf0
   [<ffffffff811175ee>] SyS_finit_module+0xe/0x10
   [<ffffffff816da837>] entry_SYSCALL_64_fastpath+0x1a/0xa9
  ---[ end trace 8304e3df5abed4a7 ]---

  ------------[ cut here ]------------
  WARNING: CPU: 2 PID: 581 at lib/kobject.c:240 kobject_add_internal+0x2b5/0x320
  kobject_add_internal failed for parport0 with -EEXIST, don't try to register things with the same name in the same directory.
  Modules linked in: ppdev sg parport_pc(+) parport pcspkr i2c_piix4 ip_tables xfs libcrc32c sr_mod cdrom ata_generic pata_acpi cirrus drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm virtio_blk e1000 virtio_pci ata_piix virtio_ring i2c_core libata virtio serio_raw floppy dm_mirror dm_region_hash dm_log dm_mod
  CPU: 2 PID: 581 Comm: systemd-udevd Tainted: G        W       4.9.0-rc4+ #1
  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.5.1 01/01/2011
   ffffc900014c7748 ffffffff81351b2f ffffc900014c7798 0000000000000000
   ffffc900014c7788 ffffffff8108bab1 000000f02c290c68 ffff880226a0afe8
   ffff88022d834bd8 00000000ffffffef ffff88022d834bd8 0000000006300000
  Call Trace:
   [<ffffffff81351b2f>] dump_stack+0x63/0x84
   [<ffffffff8108bab1>] __warn+0xd1/0xf0
   [<ffffffff8108bb2f>] warn_slowpath_fmt+0x5f/0x80
   [<ffffffff81354ce5>] kobject_add_internal+0x2b5/0x320
   [<ffffffff8148ff33>] ? device_private_init+0x23/0x70
   [<ffffffff81354f85>] kobject_add+0x75/0xd0
   [<ffffffff816d8002>] ? mutex_lock+0x12/0x2f
   [<ffffffff81490099>] device_add+0x119/0x610
   [<ffffffff81490788>] device_create_groups_vargs+0xd8/0x100
   [<ffffffffa0316090>] ? dead_read+0x10/0x10 [parport]
   [<ffffffff81490821>] device_create+0x51/0x70
   [<ffffffff811fd5a1>] ? kfree+0x121/0x170
   [<ffffffff816ccf60>] ? klist_next+0x20/0xf0
   [<ffffffffa03230b4>] pp_attach+0x34/0x40 [ppdev]
   [<ffffffffa03160a7>] driver_check+0x17/0x20 [parport]
   [<ffffffff814913e8>] bus_for_each_drv+0x68/0xb0
   [<ffffffffa03162b9>] attach_driver_chain+0x59/0x60 [parport]
   [<ffffffffa0316720>] parport_announce_port+0xc0/0x110 [parport]
   [<ffffffffa032ae7c>] parport_pc_probe_port+0x70c/0xb20 [parport_pc]
   [<ffffffff812a460a>] ? kernfs_activate+0x7a/0xe0
   [<ffffffff8148f6cc>] ? _dev_info+0x6c/0x90
   [<ffffffffa032bd95>] parport_pc_pnp_probe+0x145/0x1e0 [parport_pc]
   [<ffffffffa032bc50>] ? sio_via_probe+0x430/0x430 [parport_pc]
   [<ffffffff8140c8c1>] pnp_device_probe+0x61/0xc0
   [<ffffffff814936e7>] driver_probe_device+0x227/0x440
   [<ffffffff814939dd>] __driver_attach+0xdd/0xe0
   [<ffffffff81493900>] ? driver_probe_device+0x440/0x440
   [<ffffffff8149130c>] bus_for_each_dev+0x6c/0xc0
   [<ffffffff81492fae>] driver_attach+0x1e/0x20
   [<ffffffff814928c5>] bus_add_driver+0x45/0x270
   [<ffffffff81494450>] driver_register+0x60/0xe0
   [<ffffffff8140c710>] pnp_register_driver+0x20/0x30
   [<ffffffffa0332398>] parport_pc_init+0x2b5/0xf1d [parport_pc]
   [<ffffffffa03320e3>] ? parport_parse_param.constprop.15+0xe3/0xe3 [parport_pc]
   [<ffffffff81002190>] do_one_initcall+0x50/0x190
   [<ffffffff811958ce>] ? do_init_module+0x27/0x1f1
   [<ffffffff811fc3bc>] ? kmem_cache_alloc_trace+0x16c/0x1b0
   [<ffffffff81195907>] do_init_module+0x60/0x1f1
   [<ffffffff81116e7b>] load_module+0x15ab/0x1aa0
   [<ffffffff81113810>] ? __symbol_put+0x60/0x60
   [<ffffffff812f7b1d>] ? ima_post_read_file+0x3d/0x80
   [<ffffffff812d39eb>] ? security_kernel_post_read_file+0x6b/0x80
   [<ffffffff81117586>] SYSC_finit_module+0xa6/0xf0
   [<ffffffff811175ee>] SyS_finit_module+0xe/0x10
   [<ffffffff816da837>] entry_SYSCALL_64_fastpath+0x1a/0xa9
  ---[ end trace 8304e3df5abed4a8 ]---


I can repeat the warnings by unloading and reloading the parallel port
drivers:

  rmmod parport_pc ppdev parport
  modprobe parport_pc


Instrumenting sysfs_create_dir_ns when adding
'/devices/pnp0/00:04/ppdev/parport0', I see one call from ppdev/parport
drivers:

  entry_SYSCALL_64_fastpath
    SyS_finit_module
      SYSC_finit_module
        load_module
          do_init_module
            do_one_initcall
              ppdev_init [ppdev]
                __parport_register_driver [parport]
                  bus_for_each_dev
                    port_check[parport]
                      pp_attach[ppdev]
                        device_create
                          device_create_groups_vargs
                            device_add
                              kobject_add
                                kobject_add_internal
                                  sysfs_create_dir_ns

and then a follow up call to add the same sysfs directory via the
parport_pc driver:

  entry_SYSCALL_64_fastpath
    SyS_finit_module
      SYSC_finit_module
        load_module
          do_init_module
            do_one_initcall
              parport_pc_init [parport_pc]
                pnp_register_driver
                  driver_register
                    bus_add_driver
                      driver_attach
                        bus_for_each_dev
                          __driver_attach
                            driver_probe_device
                              pnp_device_probe
                                parport_pc_pnp_probe [parport_pc]
                                  parport_pc_probe_port [parport_pc]
                                    parport_announce_port [parport]
                                      attach_driver_chain [parport]
                                        bus_for_each_drv
                                          driver_check [parport]
                                            pp_attach[ppdev]
                                              device_create
                                                device_create_groups_vargs
                                                  device_add
                                                    kobject_add
                                                      kobject_add_internal
                                                        sysfs_create_dir_ns

This warning is readily reproducible in my current VM setup, so I can
test patches or further debugging if necessary.

Hope this helps,

-- Joe

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ