Fix attach/detach methods
- Initialize lock before starting worker process - Do not hold lock when destroying evdev. By that time ther should be no other active code pathes that can access softc
This commit is contained in:
parent
6061fc04a9
commit
7cbc77f802
@ -288,13 +288,13 @@ ft5406ts_attach(device_t dev)
|
||||
sc->sc_init_hook.ich_func = ft5406ts_init;
|
||||
sc->sc_init_hook.ich_arg = sc;
|
||||
|
||||
FT5406_LOCK_INIT(sc);
|
||||
|
||||
if (config_intrhook_establish(&sc->sc_init_hook) != 0) {
|
||||
device_printf(dev, "config_intrhook_establish failed\n");
|
||||
return (ENOMEM);
|
||||
}
|
||||
|
||||
FT5406_LOCK_INIT(sc);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
@ -308,10 +308,11 @@ ft5406ts_detach(device_t dev)
|
||||
FT5406_LOCK(sc);
|
||||
if (sc->sc_worker)
|
||||
sc->sc_detaching = 1;
|
||||
wakeup(sc);
|
||||
FT5406_UNLOCK(sc);
|
||||
|
||||
if (sc->sc_evdev)
|
||||
evdev_free(sc->sc_evdev);
|
||||
FT5406_UNLOCK(sc);
|
||||
|
||||
FT5406_LOCK_DESTROY(sc);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user