linux/drivers/pps
Jiri Slaby 368301f2fe pps: do not crash when failed to register
With this command sequence:

  modprobe plip
  modprobe pps_parport
  rmmod pps_parport

the partport_pps modules causes this crash:

  BUG: unable to handle kernel NULL pointer dereference at (null)
  IP: parport_detach+0x1d/0x60 [pps_parport]
  Oops: 0000 [#1] SMP
  ...
  Call Trace:
    parport_unregister_driver+0x65/0xc0 [parport]
    SyS_delete_module+0x187/0x210

The sequence that builds up to this is:

 1) plip is loaded and takes the parport device for exclusive use:

    plip0: Parallel port at 0x378, using IRQ 7.

 2) pps_parport then fails to grab the device:

    pps_parport: parallel port PPS client
    parport0: cannot grant exclusive access for device pps_parport
    pps_parport: couldn't register with parport0

 3) rmmod of pps_parport is then killed because it tries to access
    pardev->name, but pardev (taken from port->cad) is NULL.

So add a check for NULL in the test there too.

Link: http://lkml.kernel.org/r/20160714115245.12651-1-jslaby@suse.cz
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Rodolfo Giometti <giometti@enneenne.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2016-07-23 10:25:54 +09:00
..
clients pps: do not crash when failed to register 2016-07-23 10:25:54 +09:00
generators pps: remove unreachable code 2011-03-22 17:44:17 -07:00
kapi.c ntp/pps: use y2038 safe types in pps_event_time 2015-10-01 09:59:16 -07:00
kc.c ntp/pps: use y2038 safe types in pps_event_time 2015-10-01 09:59:16 -07:00
kc.h pps: add kernel consumer support 2011-01-13 08:03:21 -08:00
Kconfig pps: hide more configuration symbols behind CONFIG_PPS 2013-04-30 17:04:08 -07:00
Makefile pps: add parallel port PPS signal generator 2011-01-13 08:03:21 -08:00
pps.c PPS: convert class code to use dev_groups 2013-08-19 21:22:34 -07:00
sysfs.c PPS: convert class code to use dev_groups 2013-08-19 21:22:34 -07:00