Skip to content

Commit a455e29

Browse files
Peter Popovecdtor
Peter Popovec
authored andcommitted
Input: walkera0701 - fix crash on startup
The driver's timer must be set up before enabling IRQ handler, otherwise bad things may happen. Reported-and-tested-by: Fengguang Wu <[email protected]> Signed-off-by: Peter Popovec <[email protected]> CC: [email protected] Signed-off-by: Dmitry Torokhov <[email protected]>
1 parent da5ee07 commit a455e29

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

drivers/input/joystick/walkera0701.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ static void walkera0701_close(struct input_dev *dev)
196196
struct walkera_dev *w = input_get_drvdata(dev);
197197

198198
parport_disable_irq(w->parport);
199+
hrtimer_cancel(&w->timer);
199200
}
200201

201202
static int walkera0701_connect(struct walkera_dev *w, int parport)
@@ -224,6 +225,9 @@ static int walkera0701_connect(struct walkera_dev *w, int parport)
224225
if (parport_claim(w->pardevice))
225226
goto init_err1;
226227

228+
hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
229+
w->timer.function = timer_handler;
230+
227231
w->input_dev = input_allocate_device();
228232
if (!w->input_dev)
229233
goto init_err2;
@@ -254,8 +258,6 @@ static int walkera0701_connect(struct walkera_dev *w, int parport)
254258
if (err)
255259
goto init_err3;
256260

257-
hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
258-
w->timer.function = timer_handler;
259261
return 0;
260262

261263
init_err3:
@@ -271,7 +273,6 @@ static int walkera0701_connect(struct walkera_dev *w, int parport)
271273

272274
static void walkera0701_disconnect(struct walkera_dev *w)
273275
{
274-
hrtimer_cancel(&w->timer);
275276
input_unregister_device(w->input_dev);
276277
parport_release(w->pardevice);
277278
parport_unregister_device(w->pardevice);

0 commit comments

Comments
 (0)