All of lore.kernel.org
 help / color / mirror / Atom feed
* [BUG] drivers: staging: comedi: do not call blocking ops when !TASK_RUNNING; state=1
@ 2017-07-17 14:48 ` Piotr Gregor
  0 siblings, 0 replies; 7+ messages in thread
From: Piotr Gregor @ 2017-07-17 14:48 UTC (permalink / raw)
  To: linux-rt-users
  Cc: linux-kernel, sebastian.siewior, tglx, gregkh, abbotti, devel

Calling blocking operations from wrong context.
Kernel:

Linux piotrpc 4.4.70-rt83 #1 SMP PREEMPT RT Thu Jul 13 08:42:02 BST 2017 x86_64 GNU/Linux

[   80.542018] NOHZ: local_softirq_pending 80
[  125.175471] ------------[ cut here ]------------
[  125.175491] WARNING: CPU: 0 PID: 1497 at kernel/sched/core.c:7833 __might_sleep+0x9f/0xb0()
[  125.175728] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffc0575741>] comedi_read+0x1a1/0x610 [comedi]
[  125.175735] Modules linked in: cpufreq_conservative cpufreq_powersave cpufreq_userspace cfg80211 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc nls_ascii nls_cp437 vfat fat snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic intel_rapl joydev intel_powerclamp coretemp kvm drbg efi_pstore ansi_cprng irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd i915 serio_raw pcspkr efivars snd_hda_intel amplc_dio200_pci(C) amplc_dio200_common(C) snd_hda_codec iTCO_wdt comedi_8254(C) comedi_pci(C) iTCO_vendor_support comedi(C) snd_hda_core snd_hwdep snd_pcm drm_kms_helper snd_timer drm snd mei_me soundcore mei i2c_algo_bit shpchp eeepc_wmi asus_wmi sparse_keymap mxm_wmi battery hci_uart btbcm btqca btintel
[  125.175824]  bluetooth
[  125.175825]  wmi
[  125.175826]  rfkill
[  125.175827]  video
[  125.175828]  intel_lpss_acpi
[  125.175830]  intel_lpss
[  125.175831]  evdev
[  125.175832]  mfd_core
[  125.175833]  acpi_als
[  125.175834]  acpi_pad
[  125.175835]  kfifo_buf
[  125.175836]  button
[  125.175838]  industrialio
[  125.175839]  fuse
[  125.175840]  parport_pc
[  125.175841]  ppdev
[  125.175842]  lp
[  125.175843]  parport
[  125.175844]  autofs4
[  125.175845]  ext4
[  125.175846]  crc16
[  125.175847]  mbcache
[  125.175848]  jbd2
[  125.175849]  hid_generic
[  125.175851]  usbhid
[  125.175852]  sg
[  125.175853]  sr_mod
[  125.175854]  cdrom
[  125.175855]  sd_mod
[  125.175856]  crc32c_intel
[  125.175857]  ahci
[  125.175858]  libahci
[  125.175859]  psmouse
[  125.175860]  xhci_pci
[  125.175861]  libata
[  125.175862]  r8169
[  125.175864]  i2c_i801
[  125.175865]  mii
[  125.175866]  xhci_hcd
[  125.175867]  tg3
[  125.175868]  ptp
[  125.175869]  scsi_mod
[  125.175870]  usbcore
[  125.175871]  pps_core
[  125.175872]  libphy
[  125.175873]  usb_common
[  125.175874]  fan
[  125.175875]  thermal
[  125.175876]  i2c_hid
[  125.175877]  hid
[  125.175878]  fjes

[  125.175926] CPU: 0 PID: 1497 Comm: txrx Tainted: G        WC      4.4.70-rt83 #1
[  125.175928] Hardware name: NOVATECH LTD PC-XB04472/H110M-C, BIOS 3019 01/06/2017
[  125.175935]  0000000000000000 ffff8802205b3cb0 ffffffff81387160 ffff8802205b3cf8
[  125.175940]  0000000000000009 ffff8802205b3ce8 ffffffff81089766 ffffffffc057ca60
[  125.175944]  00000000000002dc 0000000000000000 0000000000000001 0000000000000001
[  125.175945] Call Trace:
[  125.175955]  [<ffffffff81387160>] dump_stack+0x85/0xc5
[  125.175963]  [<ffffffff81089766>] warn_slowpath_common+0x86/0xe0
[  125.175971]  [<ffffffff8108980c>] warn_slowpath_fmt+0x4c/0x50
[  125.175980]  [<ffffffff81185577>] ? trace_preempt_on+0x1a7/0x2b0
[  125.175985]  [<ffffffff8168ca95>] ? schedule+0x55/0xe0
[  125.175994]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
[  125.176001]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
[  125.176005]  [<ffffffff810b6d0f>] __might_sleep+0x9f/0xb0
[  125.176012]  [<ffffffff811f54cb>] __might_fault+0x3b/0xb0
[  125.176020]  [<ffffffffc057597f>] comedi_read+0x3df/0x610 [comedi]
[  125.176034]  [<ffffffff810bebf0>] ? wake_up_process+0x20/0x20
[  125.176044]  [<ffffffff812406d8>] __vfs_read+0x28/0xe0
[  125.176053]  [<ffffffff812f1f06>] ? security_file_permission+0xa6/0xc0
[  125.176060]  [<ffffffff81240c53>] ? rw_verify_area+0x53/0xf0
[  125.176066]  [<ffffffff81240d79>] vfs_read+0x89/0x130
[  125.176074]  [<ffffffff81241b79>] SyS_read+0x49/0xb0
[  125.176084]  [<ffffffff81691876>] entry_SYSCALL_64_fastpath+0x16/0x7a
[  125.176095] ---[ end trace 0000000000000003 ]---


cheers,
Piotr

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [BUG] drivers: staging: comedi: do not call blocking ops when !TASK_RUNNING; state=1
@ 2017-07-17 14:48 ` Piotr Gregor
  0 siblings, 0 replies; 7+ messages in thread
From: Piotr Gregor @ 2017-07-17 14:48 UTC (permalink / raw)
  To: linux-rt-users
  Cc: linux-kernel, sebastian.siewior, tglx, gregkh, abbotti, devel

Calling blocking operations from wrong context.
Kernel:

Linux piotrpc 4.4.70-rt83 #1 SMP PREEMPT RT Thu Jul 13 08:42:02 BST 2017 x86_64 GNU/Linux

[   80.542018] NOHZ: local_softirq_pending 80
[  125.175471] ------------[ cut here ]------------
[  125.175491] WARNING: CPU: 0 PID: 1497 at kernel/sched/core.c:7833 __might_sleep+0x9f/0xb0()
[  125.175728] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffc0575741>] comedi_read+0x1a1/0x610 [comedi]
[  125.175735] Modules linked in: cpufreq_conservative cpufreq_powersave cpufreq_userspace cfg80211 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc nls_ascii nls_cp437 vfat fat snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic intel_rapl joydev intel_powerclamp coretemp kvm drbg efi_pstore ansi_cprng irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd i915 serio_raw pcspkr efivars snd_hda_intel amplc_dio200_pci(C) amplc_dio200_common(C) snd_hda_codec iTCO_wdt comedi_8254(C) comedi_pci(C) iTCO_vendor_support comedi(C) snd_hda_core snd_hwdep snd_pcm drm_kms_helper snd_timer drm snd mei_me soundcore mei i2c_algo_bit shpchp eeepc_wmi asus_wmi sparse_keymap mxm_wmi battery hci_uart btbcm
  btqca btintel
[  125.175824]  bluetooth
[  125.175825]  wmi
[  125.175826]  rfkill
[  125.175827]  video
[  125.175828]  intel_lpss_acpi
[  125.175830]  intel_lpss
[  125.175831]  evdev
[  125.175832]  mfd_core
[  125.175833]  acpi_als
[  125.175834]  acpi_pad
[  125.175835]  kfifo_buf
[  125.175836]  button
[  125.175838]  industrialio
[  125.175839]  fuse
[  125.175840]  parport_pc
[  125.175841]  ppdev
[  125.175842]  lp
[  125.175843]  parport
[  125.175844]  autofs4
[  125.175845]  ext4
[  125.175846]  crc16
[  125.175847]  mbcache
[  125.175848]  jbd2
[  125.175849]  hid_generic
[  125.175851]  usbhid
[  125.175852]  sg
[  125.175853]  sr_mod
[  125.175854]  cdrom
[  125.175855]  sd_mod
[  125.175856]  crc32c_intel
[  125.175857]  ahci
[  125.175858]  libahci
[  125.175859]  psmouse
[  125.175860]  xhci_pci
[  125.175861]  libata
[  125.175862]  r8169
[  125.175864]  i2c_i801
[  125.175865]  mii
[  125.175866]  xhci_hcd
[  125.175867]  tg3
[  125.175868]  ptp
[  125.175869]  scsi_mod
[  125.175870]  usbcore
[  125.175871]  pps_core
[  125.175872]  libphy
[  125.175873]  usb_common
[  125.175874]  fan
[  125.175875]  thermal
[  125.175876]  i2c_hid
[  125.175877]  hid
[  125.175878]  fjes

[  125.175926] CPU: 0 PID: 1497 Comm: txrx Tainted: G        WC      4.4.70-rt83 #1
[  125.175928] Hardware name: NOVATECH LTD PC-XB04472/H110M-C, BIOS 3019 01/06/2017
[  125.175935]  0000000000000000 ffff8802205b3cb0 ffffffff81387160 ffff8802205b3cf8
[  125.175940]  0000000000000009 ffff8802205b3ce8 ffffffff81089766 ffffffffc057ca60
[  125.175944]  00000000000002dc 0000000000000000 0000000000000001 0000000000000001
[  125.175945] Call Trace:
[  125.175955]  [<ffffffff81387160>] dump_stack+0x85/0xc5
[  125.175963]  [<ffffffff81089766>] warn_slowpath_common+0x86/0xe0
[  125.175971]  [<ffffffff8108980c>] warn_slowpath_fmt+0x4c/0x50
[  125.175980]  [<ffffffff81185577>] ? trace_preempt_on+0x1a7/0x2b0
[  125.175985]  [<ffffffff8168ca95>] ? schedule+0x55/0xe0
[  125.175994]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
[  125.176001]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
[  125.176005]  [<ffffffff810b6d0f>] __might_sleep+0x9f/0xb0
[  125.176012]  [<ffffffff811f54cb>] __might_fault+0x3b/0xb0
[  125.176020]  [<ffffffffc057597f>] comedi_read+0x3df/0x610 [comedi]
[  125.176034]  [<ffffffff810bebf0>] ? wake_up_process+0x20/0x20
[  125.176044]  [<ffffffff812406d8>] __vfs_read+0x28/0xe0
[  125.176053]  [<ffffffff812f1f06>] ? security_file_permission+0xa6/0xc0
[  125.176060]  [<ffffffff81240c53>] ? rw_verify_area+0x53/0xf0
[  125.176066]  [<ffffffff81240d79>] vfs_read+0x89/0x130
[  125.176074]  [<ffffffff81241b79>] SyS_read+0x49/0xb0
[  125.176084]  [<ffffffff81691876>] entry_SYSCALL_64_fastpath+0x16/0x7a
[  125.176095] ---[ end trace 0000000000000003 ]---


cheers,
Piotr

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BUG] drivers: staging: comedi: do not call blocking ops when !TASK_RUNNING; state=1
  2017-07-17 14:48 ` Piotr Gregor
@ 2017-07-17 16:02   ` Ian Abbott
  -1 siblings, 0 replies; 7+ messages in thread
From: Ian Abbott @ 2017-07-17 16:02 UTC (permalink / raw)
  To: Piotr Gregor, linux-rt-users
  Cc: linux-kernel, sebastian.siewior, tglx, gregkh, devel

On 17/07/17 15:48, Piotr Gregor wrote:
> Calling blocking operations from wrong context.
> Kernel:
> 
> Linux piotrpc 4.4.70-rt83 #1 SMP PREEMPT RT Thu Jul 13 08:42:02 BST 2017 x86_64 GNU/Linux
> 
> [   80.542018] NOHZ: local_softirq_pending 80
> [  125.175471] ------------[ cut here ]------------
> [  125.175491] WARNING: CPU: 0 PID: 1497 at kernel/sched/core.c:7833 __might_sleep+0x9f/0xb0()
> [  125.175728] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffc0575741>] comedi_read+0x1a1/0x610 [comedi]
> [  125.175735] Modules linked in: cpufreq_conservative cpufreq_powersave cpufreq_userspace cfg80211 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc nls_ascii nls_cp437 vfat fat snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic intel_rapl joydev intel_powerclamp coretemp kvm drbg efi_pstore ansi_cprng irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd i915 serio_raw pcspkr efivars snd_hda_intel amplc_dio200_pci(C) amplc_dio200_common(C) snd_hda_codec iTCO_wdt comedi_8254(C) comedi_pci(C) iTCO_vendor_support comedi(C) snd_hda_core snd_hwdep snd_pcm drm_kms_helper snd_timer drm snd mei_me soundcore mei i2c_algo_bit shpchp eeepc_wmi asus_wmi sparse_keymap mxm_wmi battery hci_uart btbcm btqca btintel
> [  125.175824]  bluetooth
> [  125.175825]  wmi
> [  125.175826]  rfkill
> [  125.175827]  video
> [  125.175828]  intel_lpss_acpi
> [  125.175830]  intel_lpss
> [  125.175831]  evdev
> [  125.175832]  mfd_core
> [  125.175833]  acpi_als
> [  125.175834]  acpi_pad
> [  125.175835]  kfifo_buf
> [  125.175836]  button
> [  125.175838]  industrialio
> [  125.175839]  fuse
> [  125.175840]  parport_pc
> [  125.175841]  ppdev
> [  125.175842]  lp
> [  125.175843]  parport
> [  125.175844]  autofs4
> [  125.175845]  ext4
> [  125.175846]  crc16
> [  125.175847]  mbcache
> [  125.175848]  jbd2
> [  125.175849]  hid_generic
> [  125.175851]  usbhid
> [  125.175852]  sg
> [  125.175853]  sr_mod
> [  125.175854]  cdrom
> [  125.175855]  sd_mod
> [  125.175856]  crc32c_intel
> [  125.175857]  ahci
> [  125.175858]  libahci
> [  125.175859]  psmouse
> [  125.175860]  xhci_pci
> [  125.175861]  libata
> [  125.175862]  r8169
> [  125.175864]  i2c_i801
> [  125.175865]  mii
> [  125.175866]  xhci_hcd
> [  125.175867]  tg3
> [  125.175868]  ptp
> [  125.175869]  scsi_mod
> [  125.175870]  usbcore
> [  125.175871]  pps_core
> [  125.175872]  libphy
> [  125.175873]  usb_common
> [  125.175874]  fan
> [  125.175875]  thermal
> [  125.175876]  i2c_hid
> [  125.175877]  hid
> [  125.175878]  fjes
> 
> [  125.175926] CPU: 0 PID: 1497 Comm: txrx Tainted: G        WC      4.4.70-rt83 #1
> [  125.175928] Hardware name: NOVATECH LTD PC-XB04472/H110M-C, BIOS 3019 01/06/2017
> [  125.175935]  0000000000000000 ffff8802205b3cb0 ffffffff81387160 ffff8802205b3cf8
> [  125.175940]  0000000000000009 ffff8802205b3ce8 ffffffff81089766 ffffffffc057ca60
> [  125.175944]  00000000000002dc 0000000000000000 0000000000000001 0000000000000001
> [  125.175945] Call Trace:
> [  125.175955]  [<ffffffff81387160>] dump_stack+0x85/0xc5
> [  125.175963]  [<ffffffff81089766>] warn_slowpath_common+0x86/0xe0
> [  125.175971]  [<ffffffff8108980c>] warn_slowpath_fmt+0x4c/0x50
> [  125.175980]  [<ffffffff81185577>] ? trace_preempt_on+0x1a7/0x2b0
> [  125.175985]  [<ffffffff8168ca95>] ? schedule+0x55/0xe0
> [  125.175994]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
> [  125.176001]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
> [  125.176005]  [<ffffffff810b6d0f>] __might_sleep+0x9f/0xb0
> [  125.176012]  [<ffffffff811f54cb>] __might_fault+0x3b/0xb0
> [  125.176020]  [<ffffffffc057597f>] comedi_read+0x3df/0x610 [comedi]
> [  125.176034]  [<ffffffff810bebf0>] ? wake_up_process+0x20/0x20
> [  125.176044]  [<ffffffff812406d8>] __vfs_read+0x28/0xe0
> [  125.176053]  [<ffffffff812f1f06>] ? security_file_permission+0xa6/0xc0
> [  125.176060]  [<ffffffff81240c53>] ? rw_verify_area+0x53/0xf0
> [  125.176066]  [<ffffffff81240d79>] vfs_read+0x89/0x130
> [  125.176074]  [<ffffffff81241b79>] SyS_read+0x49/0xb0
> [  125.176084]  [<ffffffff81691876>] entry_SYSCALL_64_fastpath+0x16/0x7a
> [  125.176095] ---[ end trace 0000000000000003 ]---
> 
> 
> cheers,
> Piotr

Thanks for the bug report.  I think comedi_read() in 
"drivers/staging/comedi/comedi_fops.c" needs a call to 
set_current_state(TASK_RUNNING) just before the call to copy_to_user(...).

Similarly, comedi_write() needs a call to set_current_task(TASK_RUNNING) 
just before the call to copy_from_user(...), and another call to 
set_current_task(TASK_RUNNING) before the call to mutex_lock().

I'll work on a patch.

-- 
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti@mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BUG] drivers: staging: comedi: do not call blocking ops when !TASK_RUNNING; state=1
@ 2017-07-17 16:02   ` Ian Abbott
  0 siblings, 0 replies; 7+ messages in thread
From: Ian Abbott @ 2017-07-17 16:02 UTC (permalink / raw)
  To: Piotr Gregor, linux-rt-users
  Cc: linux-kernel, sebastian.siewior, tglx, gregkh, devel

On 17/07/17 15:48, Piotr Gregor wrote:
> Calling blocking operations from wrong context.
> Kernel:
> 
> Linux piotrpc 4.4.70-rt83 #1 SMP PREEMPT RT Thu Jul 13 08:42:02 BST 2017 x86_64 GNU/Linux
> 
> [   80.542018] NOHZ: local_softirq_pending 80
> [  125.175471] ------------[ cut here ]------------
> [  125.175491] WARNING: CPU: 0 PID: 1497 at kernel/sched/core.c:7833 __might_sleep+0x9f/0xb0()
> [  125.175728] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffc0575741>] comedi_read+0x1a1/0x610 [comedi]
> [  125.175735] Modules linked in: cpufreq_conservative cpufreq_powersave cpufreq_userspace cfg80211 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc nls_ascii nls_cp437 vfat fat snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic intel_rapl joydev intel_powerclamp coretemp kvm drbg efi_pstore ansi_cprng irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd i915 serio_raw pcspkr efivars snd_hda_intel amplc_dio200_pci(C) amplc_dio200_common(C) snd_hda_codec iTCO_wdt comedi_8254(C) comedi_pci(C) iTCO_vendor_support comedi(C) snd_hda_core snd_hwdep snd_pcm drm_kms_helper snd_timer drm snd mei_me soundcore mei i2c_algo_bit shpchp eeepc_wmi asus_wmi sparse_keymap mxm_wmi battery hci_uart btb
 cm btqca btintel
> [  125.175824]  bluetooth
> [  125.175825]  wmi
> [  125.175826]  rfkill
> [  125.175827]  video
> [  125.175828]  intel_lpss_acpi
> [  125.175830]  intel_lpss
> [  125.175831]  evdev
> [  125.175832]  mfd_core
> [  125.175833]  acpi_als
> [  125.175834]  acpi_pad
> [  125.175835]  kfifo_buf
> [  125.175836]  button
> [  125.175838]  industrialio
> [  125.175839]  fuse
> [  125.175840]  parport_pc
> [  125.175841]  ppdev
> [  125.175842]  lp
> [  125.175843]  parport
> [  125.175844]  autofs4
> [  125.175845]  ext4
> [  125.175846]  crc16
> [  125.175847]  mbcache
> [  125.175848]  jbd2
> [  125.175849]  hid_generic
> [  125.175851]  usbhid
> [  125.175852]  sg
> [  125.175853]  sr_mod
> [  125.175854]  cdrom
> [  125.175855]  sd_mod
> [  125.175856]  crc32c_intel
> [  125.175857]  ahci
> [  125.175858]  libahci
> [  125.175859]  psmouse
> [  125.175860]  xhci_pci
> [  125.175861]  libata
> [  125.175862]  r8169
> [  125.175864]  i2c_i801
> [  125.175865]  mii
> [  125.175866]  xhci_hcd
> [  125.175867]  tg3
> [  125.175868]  ptp
> [  125.175869]  scsi_mod
> [  125.175870]  usbcore
> [  125.175871]  pps_core
> [  125.175872]  libphy
> [  125.175873]  usb_common
> [  125.175874]  fan
> [  125.175875]  thermal
> [  125.175876]  i2c_hid
> [  125.175877]  hid
> [  125.175878]  fjes
> 
> [  125.175926] CPU: 0 PID: 1497 Comm: txrx Tainted: G        WC      4.4.70-rt83 #1
> [  125.175928] Hardware name: NOVATECH LTD PC-XB04472/H110M-C, BIOS 3019 01/06/2017
> [  125.175935]  0000000000000000 ffff8802205b3cb0 ffffffff81387160 ffff8802205b3cf8
> [  125.175940]  0000000000000009 ffff8802205b3ce8 ffffffff81089766 ffffffffc057ca60
> [  125.175944]  00000000000002dc 0000000000000000 0000000000000001 0000000000000001
> [  125.175945] Call Trace:
> [  125.175955]  [<ffffffff81387160>] dump_stack+0x85/0xc5
> [  125.175963]  [<ffffffff81089766>] warn_slowpath_common+0x86/0xe0
> [  125.175971]  [<ffffffff8108980c>] warn_slowpath_fmt+0x4c/0x50
> [  125.175980]  [<ffffffff81185577>] ? trace_preempt_on+0x1a7/0x2b0
> [  125.175985]  [<ffffffff8168ca95>] ? schedule+0x55/0xe0
> [  125.175994]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
> [  125.176001]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
> [  125.176005]  [<ffffffff810b6d0f>] __might_sleep+0x9f/0xb0
> [  125.176012]  [<ffffffff811f54cb>] __might_fault+0x3b/0xb0
> [  125.176020]  [<ffffffffc057597f>] comedi_read+0x3df/0x610 [comedi]
> [  125.176034]  [<ffffffff810bebf0>] ? wake_up_process+0x20/0x20
> [  125.176044]  [<ffffffff812406d8>] __vfs_read+0x28/0xe0
> [  125.176053]  [<ffffffff812f1f06>] ? security_file_permission+0xa6/0xc0
> [  125.176060]  [<ffffffff81240c53>] ? rw_verify_area+0x53/0xf0
> [  125.176066]  [<ffffffff81240d79>] vfs_read+0x89/0x130
> [  125.176074]  [<ffffffff81241b79>] SyS_read+0x49/0xb0
> [  125.176084]  [<ffffffff81691876>] entry_SYSCALL_64_fastpath+0x16/0x7a
> [  125.176095] ---[ end trace 0000000000000003 ]---
> 
> 
> cheers,
> Piotr

Thanks for the bug report.  I think comedi_read() in 
"drivers/staging/comedi/comedi_fops.c" needs a call to 
set_current_state(TASK_RUNNING) just before the call to copy_to_user(...).

Similarly, comedi_write() needs a call to set_current_task(TASK_RUNNING) 
just before the call to copy_from_user(...), and another call to 
set_current_task(TASK_RUNNING) before the call to mutex_lock().

I'll work on a patch.

-- 
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti@mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BUG] drivers: staging: comedi: do not call blocking ops when !TASK_RUNNING; state=1
  2017-07-17 16:02   ` Ian Abbott
@ 2017-07-17 18:14     ` Piotr Gregor
  -1 siblings, 0 replies; 7+ messages in thread
From: Piotr Gregor @ 2017-07-17 18:14 UTC (permalink / raw)
  To: Ian Abbott
  Cc: linux-rt-users, linux-kernel, sebastian.siewior, tglx, gregkh, devel

Hi Ian,

I am afraid I have more problems with running Comedi on rt-patched kernel than
only that. I am still trying to figure out the specific reason - hopefully it is
my fault and I scrued up my own code, but so far it seems pcie215
support doesn't work at least in the same way on rt-patched kernel
as it was on non-rt. I will dig it a little bit harder, likely coming with another
bug reports shoud they be observed.

Do you know about other experience other people may have using Comedi
for pcie215 on rt-patched kernels, specifically 4.4.70?

Has Comedi been tested on rt kernels by yourself?

cheers,
Piotr

On Mon, Jul 17, 2017 at 05:02:45PM +0100, Ian Abbott wrote:
> On 17/07/17 15:48, Piotr Gregor wrote:
> >Calling blocking operations from wrong context.
> >Kernel:
> >
> >Linux piotrpc 4.4.70-rt83 #1 SMP PREEMPT RT Thu Jul 13 08:42:02 BST 2017 x86_64 GNU/Linux
> >
> >[   80.542018] NOHZ: local_softirq_pending 80
> >[  125.175471] ------------[ cut here ]------------
> >[  125.175491] WARNING: CPU: 0 PID: 1497 at kernel/sched/core.c:7833 __might_sleep+0x9f/0xb0()
> >[  125.175728] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffc0575741>] comedi_read+0x1a1/0x610 [comedi]
> >[  125.175735] Modules linked in: cpufreq_conservative cpufreq_powersave cpufreq_userspace cfg80211 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc nls_ascii nls_cp437 vfat fat snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic intel_rapl joydev intel_powerclamp coretemp kvm drbg efi_pstore ansi_cprng irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd i915 serio_raw pcspkr efivars snd_hda_intel amplc_dio200_pci(C) amplc_dio200_common(C) snd_hda_codec iTCO_wdt comedi_8254(C) comedi_pci(C) iTCO_vendor_support comedi(C) snd_hda_core snd_hwdep snd_pcm drm_kms_helper snd_timer drm snd mei_me soundcore mei i2c_algo_bit shpchp eeepc_wmi asus_wmi sparse_keymap mxm_wmi battery hci_uart btbcm btqca btintel
> >[  125.175824]  bluetooth
> >[  125.175825]  wmi
> >[  125.175826]  rfkill
> >[  125.175827]  video
> >[  125.175828]  intel_lpss_acpi
> >[  125.175830]  intel_lpss
> >[  125.175831]  evdev
> >[  125.175832]  mfd_core
> >[  125.175833]  acpi_als
> >[  125.175834]  acpi_pad
> >[  125.175835]  kfifo_buf
> >[  125.175836]  button
> >[  125.175838]  industrialio
> >[  125.175839]  fuse
> >[  125.175840]  parport_pc
> >[  125.175841]  ppdev
> >[  125.175842]  lp
> >[  125.175843]  parport
> >[  125.175844]  autofs4
> >[  125.175845]  ext4
> >[  125.175846]  crc16
> >[  125.175847]  mbcache
> >[  125.175848]  jbd2
> >[  125.175849]  hid_generic
> >[  125.175851]  usbhid
> >[  125.175852]  sg
> >[  125.175853]  sr_mod
> >[  125.175854]  cdrom
> >[  125.175855]  sd_mod
> >[  125.175856]  crc32c_intel
> >[  125.175857]  ahci
> >[  125.175858]  libahci
> >[  125.175859]  psmouse
> >[  125.175860]  xhci_pci
> >[  125.175861]  libata
> >[  125.175862]  r8169
> >[  125.175864]  i2c_i801
> >[  125.175865]  mii
> >[  125.175866]  xhci_hcd
> >[  125.175867]  tg3
> >[  125.175868]  ptp
> >[  125.175869]  scsi_mod
> >[  125.175870]  usbcore
> >[  125.175871]  pps_core
> >[  125.175872]  libphy
> >[  125.175873]  usb_common
> >[  125.175874]  fan
> >[  125.175875]  thermal
> >[  125.175876]  i2c_hid
> >[  125.175877]  hid
> >[  125.175878]  fjes
> >
> >[  125.175926] CPU: 0 PID: 1497 Comm: txrx Tainted: G        WC      4.4.70-rt83 #1
> >[  125.175928] Hardware name: NOVATECH LTD PC-XB04472/H110M-C, BIOS 3019 01/06/2017
> >[  125.175935]  0000000000000000 ffff8802205b3cb0 ffffffff81387160 ffff8802205b3cf8
> >[  125.175940]  0000000000000009 ffff8802205b3ce8 ffffffff81089766 ffffffffc057ca60
> >[  125.175944]  00000000000002dc 0000000000000000 0000000000000001 0000000000000001
> >[  125.175945] Call Trace:
> >[  125.175955]  [<ffffffff81387160>] dump_stack+0x85/0xc5
> >[  125.175963]  [<ffffffff81089766>] warn_slowpath_common+0x86/0xe0
> >[  125.175971]  [<ffffffff8108980c>] warn_slowpath_fmt+0x4c/0x50
> >[  125.175980]  [<ffffffff81185577>] ? trace_preempt_on+0x1a7/0x2b0
> >[  125.175985]  [<ffffffff8168ca95>] ? schedule+0x55/0xe0
> >[  125.175994]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
> >[  125.176001]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
> >[  125.176005]  [<ffffffff810b6d0f>] __might_sleep+0x9f/0xb0
> >[  125.176012]  [<ffffffff811f54cb>] __might_fault+0x3b/0xb0
> >[  125.176020]  [<ffffffffc057597f>] comedi_read+0x3df/0x610 [comedi]
> >[  125.176034]  [<ffffffff810bebf0>] ? wake_up_process+0x20/0x20
> >[  125.176044]  [<ffffffff812406d8>] __vfs_read+0x28/0xe0
> >[  125.176053]  [<ffffffff812f1f06>] ? security_file_permission+0xa6/0xc0
> >[  125.176060]  [<ffffffff81240c53>] ? rw_verify_area+0x53/0xf0
> >[  125.176066]  [<ffffffff81240d79>] vfs_read+0x89/0x130
> >[  125.176074]  [<ffffffff81241b79>] SyS_read+0x49/0xb0
> >[  125.176084]  [<ffffffff81691876>] entry_SYSCALL_64_fastpath+0x16/0x7a
> >[  125.176095] ---[ end trace 0000000000000003 ]---
> >
> >
> >cheers,
> >Piotr
> 
> Thanks for the bug report.  I think comedi_read() in
> "drivers/staging/comedi/comedi_fops.c" needs a call to
> set_current_state(TASK_RUNNING) just before the call to copy_to_user(...).
> 
> Similarly, comedi_write() needs a call to set_current_task(TASK_RUNNING)
> just before the call to copy_from_user(...), and another call to
> set_current_task(TASK_RUNNING) before the call to mutex_lock().
> 
> I'll work on a patch.
> 
> -- 
> -=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti@mev.co.uk> )=-
> -=(                          Web: http://www.mev.co.uk/  )=-

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BUG] drivers: staging: comedi: do not call blocking ops when !TASK_RUNNING; state=1
@ 2017-07-17 18:14     ` Piotr Gregor
  0 siblings, 0 replies; 7+ messages in thread
From: Piotr Gregor @ 2017-07-17 18:14 UTC (permalink / raw)
  To: Ian Abbott
  Cc: linux-rt-users, linux-kernel, sebastian.siewior, tglx, gregkh, devel

Hi Ian,

I am afraid I have more problems with running Comedi on rt-patched kernel than
only that. I am still trying to figure out the specific reason - hopefully it is
my fault and I scrued up my own code, but so far it seems pcie215
support doesn't work at least in the same way on rt-patched kernel
as it was on non-rt. I will dig it a little bit harder, likely coming with another
bug reports shoud they be observed.

Do you know about other experience other people may have using Comedi
for pcie215 on rt-patched kernels, specifically 4.4.70?

Has Comedi been tested on rt kernels by yourself?

cheers,
Piotr

On Mon, Jul 17, 2017 at 05:02:45PM +0100, Ian Abbott wrote:
> On 17/07/17 15:48, Piotr Gregor wrote:
> >Calling blocking operations from wrong context.
> >Kernel:
> >
> >Linux piotrpc 4.4.70-rt83 #1 SMP PREEMPT RT Thu Jul 13 08:42:02 BST 2017 x86_64 GNU/Linux
> >
> >[   80.542018] NOHZ: local_softirq_pending 80
> >[  125.175471] ------------[ cut here ]------------
> >[  125.175491] WARNING: CPU: 0 PID: 1497 at kernel/sched/core.c:7833 __might_sleep+0x9f/0xb0()
> >[  125.175728] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffc0575741>] comedi_read+0x1a1/0x610 [comedi]
> >[  125.175735] Modules linked in: cpufreq_conservative cpufreq_powersave cpufreq_userspace cfg80211 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc nls_ascii nls_cp437 vfat fat snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic intel_rapl joydev intel_powerclamp coretemp kvm drbg efi_pstore ansi_cprng irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd i915 serio_raw pcspkr efivars snd_hda_intel amplc_dio200_pci(C) amplc_dio200_common(C) snd_hda_codec iTCO_wdt comedi_8254(C) comedi_pci(C) iTCO_vendor_support comedi(C) snd_hda_core snd_hwdep snd_pcm drm_kms_helper snd_timer drm snd mei_me soundcore mei i2c_algo_bit shpchp eeepc_wmi asus_wmi sparse_keymap mxm_wmi battery hci_uart bt
 bcm btqca btintel
> >[  125.175824]  bluetooth
> >[  125.175825]  wmi
> >[  125.175826]  rfkill
> >[  125.175827]  video
> >[  125.175828]  intel_lpss_acpi
> >[  125.175830]  intel_lpss
> >[  125.175831]  evdev
> >[  125.175832]  mfd_core
> >[  125.175833]  acpi_als
> >[  125.175834]  acpi_pad
> >[  125.175835]  kfifo_buf
> >[  125.175836]  button
> >[  125.175838]  industrialio
> >[  125.175839]  fuse
> >[  125.175840]  parport_pc
> >[  125.175841]  ppdev
> >[  125.175842]  lp
> >[  125.175843]  parport
> >[  125.175844]  autofs4
> >[  125.175845]  ext4
> >[  125.175846]  crc16
> >[  125.175847]  mbcache
> >[  125.175848]  jbd2
> >[  125.175849]  hid_generic
> >[  125.175851]  usbhid
> >[  125.175852]  sg
> >[  125.175853]  sr_mod
> >[  125.175854]  cdrom
> >[  125.175855]  sd_mod
> >[  125.175856]  crc32c_intel
> >[  125.175857]  ahci
> >[  125.175858]  libahci
> >[  125.175859]  psmouse
> >[  125.175860]  xhci_pci
> >[  125.175861]  libata
> >[  125.175862]  r8169
> >[  125.175864]  i2c_i801
> >[  125.175865]  mii
> >[  125.175866]  xhci_hcd
> >[  125.175867]  tg3
> >[  125.175868]  ptp
> >[  125.175869]  scsi_mod
> >[  125.175870]  usbcore
> >[  125.175871]  pps_core
> >[  125.175872]  libphy
> >[  125.175873]  usb_common
> >[  125.175874]  fan
> >[  125.175875]  thermal
> >[  125.175876]  i2c_hid
> >[  125.175877]  hid
> >[  125.175878]  fjes
> >
> >[  125.175926] CPU: 0 PID: 1497 Comm: txrx Tainted: G        WC      4.4.70-rt83 #1
> >[  125.175928] Hardware name: NOVATECH LTD PC-XB04472/H110M-C, BIOS 3019 01/06/2017
> >[  125.175935]  0000000000000000 ffff8802205b3cb0 ffffffff81387160 ffff8802205b3cf8
> >[  125.175940]  0000000000000009 ffff8802205b3ce8 ffffffff81089766 ffffffffc057ca60
> >[  125.175944]  00000000000002dc 0000000000000000 0000000000000001 0000000000000001
> >[  125.175945] Call Trace:
> >[  125.175955]  [<ffffffff81387160>] dump_stack+0x85/0xc5
> >[  125.175963]  [<ffffffff81089766>] warn_slowpath_common+0x86/0xe0
> >[  125.175971]  [<ffffffff8108980c>] warn_slowpath_fmt+0x4c/0x50
> >[  125.175980]  [<ffffffff81185577>] ? trace_preempt_on+0x1a7/0x2b0
> >[  125.175985]  [<ffffffff8168ca95>] ? schedule+0x55/0xe0
> >[  125.175994]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
> >[  125.176001]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
> >[  125.176005]  [<ffffffff810b6d0f>] __might_sleep+0x9f/0xb0
> >[  125.176012]  [<ffffffff811f54cb>] __might_fault+0x3b/0xb0
> >[  125.176020]  [<ffffffffc057597f>] comedi_read+0x3df/0x610 [comedi]
> >[  125.176034]  [<ffffffff810bebf0>] ? wake_up_process+0x20/0x20
> >[  125.176044]  [<ffffffff812406d8>] __vfs_read+0x28/0xe0
> >[  125.176053]  [<ffffffff812f1f06>] ? security_file_permission+0xa6/0xc0
> >[  125.176060]  [<ffffffff81240c53>] ? rw_verify_area+0x53/0xf0
> >[  125.176066]  [<ffffffff81240d79>] vfs_read+0x89/0x130
> >[  125.176074]  [<ffffffff81241b79>] SyS_read+0x49/0xb0
> >[  125.176084]  [<ffffffff81691876>] entry_SYSCALL_64_fastpath+0x16/0x7a
> >[  125.176095] ---[ end trace 0000000000000003 ]---
> >
> >
> >cheers,
> >Piotr
> 
> Thanks for the bug report.  I think comedi_read() in
> "drivers/staging/comedi/comedi_fops.c" needs a call to
> set_current_state(TASK_RUNNING) just before the call to copy_to_user(...).
> 
> Similarly, comedi_write() needs a call to set_current_task(TASK_RUNNING)
> just before the call to copy_from_user(...), and another call to
> set_current_task(TASK_RUNNING) before the call to mutex_lock().
> 
> I'll work on a patch.
> 
> -- 
> -=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti@mev.co.uk> )=-
> -=(                          Web: http://www.mev.co.uk/  )=-

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BUG] drivers: staging: comedi: do not call blocking ops when !TASK_RUNNING; state=1
  2017-07-17 18:14     ` Piotr Gregor
  (?)
@ 2017-07-18 11:17     ` Ian Abbott
  -1 siblings, 0 replies; 7+ messages in thread
From: Ian Abbott @ 2017-07-18 11:17 UTC (permalink / raw)
  To: Piotr Gregor
  Cc: linux-rt-users, linux-kernel, sebastian.siewior, tglx, gregkh, devel

[Top-posting fixed.  Please don't top-post!]
On 17/07/17 19:14, Piotr Gregor wrote:
> On Mon, Jul 17, 2017 at 05:02:45PM +0100, Ian Abbott wrote:
>> On 17/07/17 15:48, Piotr Gregor wrote:
>>> Calling blocking operations from wrong context.
>>> Kernel:
>>>
>>> Linux piotrpc 4.4.70-rt83 #1 SMP PREEMPT RT Thu Jul 13 08:42:02 BST 2017 x86_64 GNU/Linux
>>>
>>> [   80.542018] NOHZ: local_softirq_pending 80
>>> [  125.175471] ------------[ cut here ]------------
>>> [  125.175491] WARNING: CPU: 0 PID: 1497 at kernel/sched/core.c:7833 __might_sleep+0x9f/0xb0()
>>> [  125.175728] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffc0575741>] comedi_read+0x1a1/0x610 [comedi]
[snip]
>>> [  125.175926] CPU: 0 PID: 1497 Comm: txrx Tainted: G        WC      4.4.70-rt83 #1
>>> [  125.175928] Hardware name: NOVATECH LTD PC-XB04472/H110M-C, BIOS 3019 01/06/2017
>>> [  125.175935]  0000000000000000 ffff8802205b3cb0 ffffffff81387160 ffff8802205b3cf8
>>> [  125.175940]  0000000000000009 ffff8802205b3ce8 ffffffff81089766 ffffffffc057ca60
>>> [  125.175944]  00000000000002dc 0000000000000000 0000000000000001 0000000000000001
>>> [  125.175945] Call Trace:
>>> [  125.175955]  [<ffffffff81387160>] dump_stack+0x85/0xc5
>>> [  125.175963]  [<ffffffff81089766>] warn_slowpath_common+0x86/0xe0
>>> [  125.175971]  [<ffffffff8108980c>] warn_slowpath_fmt+0x4c/0x50
>>> [  125.175980]  [<ffffffff81185577>] ? trace_preempt_on+0x1a7/0x2b0
>>> [  125.175985]  [<ffffffff8168ca95>] ? schedule+0x55/0xe0
>>> [  125.175994]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
>>> [  125.176001]  [<ffffffffc0575741>] ? comedi_read+0x1a1/0x610 [comedi]
>>> [  125.176005]  [<ffffffff810b6d0f>] __might_sleep+0x9f/0xb0
>>> [  125.176012]  [<ffffffff811f54cb>] __might_fault+0x3b/0xb0
>>> [  125.176020]  [<ffffffffc057597f>] comedi_read+0x3df/0x610 [comedi]
>>> [  125.176034]  [<ffffffff810bebf0>] ? wake_up_process+0x20/0x20
>>> [  125.176044]  [<ffffffff812406d8>] __vfs_read+0x28/0xe0
>>> [  125.176053]  [<ffffffff812f1f06>] ? security_file_permission+0xa6/0xc0
>>> [  125.176060]  [<ffffffff81240c53>] ? rw_verify_area+0x53/0xf0
>>> [  125.176066]  [<ffffffff81240d79>] vfs_read+0x89/0x130
>>> [  125.176074]  [<ffffffff81241b79>] SyS_read+0x49/0xb0
>>> [  125.176084]  [<ffffffff81691876>] entry_SYSCALL_64_fastpath+0x16/0x7a
>>> [  125.176095] ---[ end trace 0000000000000003 ]---
>>>
>>>
>>> cheers,
>>> Piotr
>>
>> Thanks for the bug report.  I think comedi_read() in
>> "drivers/staging/comedi/comedi_fops.c" needs a call to
>> set_current_state(TASK_RUNNING) just before the call to copy_to_user(...).
>>
>> Similarly, comedi_write() needs a call to set_current_task(TASK_RUNNING)
>> just before the call to copy_from_user(...), and another call to
>> set_current_task(TASK_RUNNING) before the call to mutex_lock().
>>
>> I'll work on a patch.

 > Hi Ian,
 >
 > I am afraid I have more problems with running Comedi on rt-patched 
kernel than
 > only that. I am still trying to figure out the specific reason - 
hopefully it is
 > my fault and I scrued up my own code, but so far it seems pcie215
 > support doesn't work at least in the same way on rt-patched kernel
 > as it was on non-rt. I will dig it a little bit harder, likely coming 
with another
 > bug reports shoud they be observed.
 >
 > Do you know about other experience other people may have using Comedi
 > for pcie215 on rt-patched kernels, specifically 4.4.70?

Not in particular.  People have used Comedi with RTAI in the past, but 
that's a different animal to the RT patch-set.

 > Has Comedi been tested on rt kernels by yourself?

Not up until now.  Initial testing with the "comedi_test" module 
suggests there may be some issues to be resolved (e.g. it locks up when 
running an asynchronous command), although "comedi_test" isn't a typical 
Comedi driver as it makes heavy use of kernel timers.  I do have a 
pcie215, but haven't tried it on an RT kernel yet.

-- 
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti@mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-07-18 11:17 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-17 14:48 [BUG] drivers: staging: comedi: do not call blocking ops when !TASK_RUNNING; state=1 Piotr Gregor
2017-07-17 14:48 ` Piotr Gregor
2017-07-17 16:02 ` Ian Abbott
2017-07-17 16:02   ` Ian Abbott
2017-07-17 18:14   ` Piotr Gregor
2017-07-17 18:14     ` Piotr Gregor
2017-07-18 11:17     ` Ian Abbott

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.