Messages in this thread | | | Date | Mon, 7 Mar 2016 10:32:55 -0700 | From | Ross Zwisler <> | Subject | Re: [PATCH v2] parport: register driver later |
| |
On Sun, Mar 06, 2016 at 08:40:10PM +0530, Sudip Mukherjee wrote: > If the parport bus is not yet registered and any device using parallel > port tries to register with the bus we get a stackdump with a message > of Kernel bug. > > Reported-by: Fengguang Wu <fengguang.wu@intel.com> > Cc: <stable@vger.kernel.org> # 4.2+ > Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> > --- > > Hi Ross, > Can you please test this patch in your setup. This is a respin of the > previous patch in another way.
Yep, this also solves the issue for me.
Tested-by: Ross Zwisler <ross.zwisler@linux.intel.com>
> drivers/parport/share.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/parport/share.c b/drivers/parport/share.c > index 3308427..c1eba80 100644 > --- a/drivers/parport/share.c > +++ b/drivers/parport/share.c > @@ -135,9 +135,18 @@ static struct bus_type parport_bus_type = { > .probe = parport_probe, > }; > > +static bool is_registered; > + > int parport_bus_init(void) > { > - return bus_register(&parport_bus_type); > + int ret; > + > + ret = bus_register(&parport_bus_type); > + if (ret) > + return ret; > + > + is_registered = true; > + return 0; > } > > void parport_bus_exit(void) > @@ -273,6 +282,9 @@ int __parport_register_driver(struct parport_driver *drv, struct module *owner, > /* using device model */ > int ret; > > + if (!is_registered) > + return -EAGAIN; > + > /* initialize common driver fields */ > drv->driver.name = drv->name; > drv->driver.bus = &parport_bus_type; > -- > 1.9.1
| |