Input: bfin_rotary - fix potential oops in interrupt handler

The interrupt handler in the driver tries to fetch driver data from
platform device, unfortunately it is only set up after interrupt handler
is registered. Since interrupt handler does not really need to access
the platform device itself let's change it to get the driver data
instance instead.

Acked-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
diff --git a/drivers/input/misc/bfin_rotary.c b/drivers/input/misc/bfin_rotary.c
index 3f43515..2bf93df 100644
--- a/drivers/input/misc/bfin_rotary.c
+++ b/drivers/input/misc/bfin_rotary.c
@@ -59,8 +59,7 @@
 
 static irqreturn_t bfin_rotary_isr(int irq, void *dev_id)
 {
-	struct platform_device *pdev = dev_id;
-	struct bfin_rot *rotary = platform_get_drvdata(pdev);
+	struct bfin_rot *rotary = dev_id;
 	int delta;
 
 	switch (bfin_read_CNT_STATUS()) {
@@ -152,7 +151,7 @@
 	}
 
 	error = request_irq(rotary->irq, bfin_rotary_isr,
-			    0, dev_name(&pdev->dev), pdev);
+			    0, dev_name(&pdev->dev), rotary);
 	if (error) {
 		dev_err(&pdev->dev,
 			"unable to claim irq %d; error %d\n",
@@ -186,7 +185,7 @@
 	return 0;
 
 out2:
-	free_irq(rotary->irq, pdev);
+	free_irq(rotary->irq, rotary);
 out1:
 	input_free_device(input);
 	kfree(rotary);
@@ -202,7 +201,7 @@
 	bfin_write_CNT_CONFIG(0);
 	bfin_write_CNT_IMASK(0);
 
-	free_irq(rotary->irq, pdev);
+	free_irq(rotary->irq, rotary);
 	input_unregister_device(rotary->input);
 	peripheral_free_list(per_cnt);