projects/linux·commit e7507ed9

[PATCH] uniput - fix crash on SMP

e7507ed9 · Dmitry Torokhov <[email protected]> · 2005-10-17 16:43:32 -07:00

Only signal completion after marking request slot as free, otherwise other
processor can free request structure before we finish using it.

Signed-off-by: Dmitry Torokhov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
e7507ed91e093b9e4e218e41ebfdce05458258fc
Parents
5cc9eeef

Changes

1 files changed · +2 −2

FileStatusAddDelContent
drivers/input/misc/uinput.cmodified+2−2View file

drivers/input/misc/uinput.c

View file
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
index d5c5b32..4015a91 100644
--- a/drivers/input/misc/uinput.c
+++ b/drivers/input/misc/uinput.c
@@ -90,11 +90,11 @@ static inline int uinput_request_reserve_slot(struct uinput_device *udev, struct
static void uinput_request_done(struct uinput_device *udev, struct uinput_request *request)
{
- complete(&request->done);
-
/* Mark slot as available */
udev->requests[request->id] = NULL;
wake_up_interruptible(&udev->requests_waitq);
+
+ complete(&request->done);
}
static int uinput_request_submit(struct input_dev *dev, struct uinput_request *request)