Files
libfprint/debian/patches/u8a87ba4-uru4000-fix-cancelling-of-imaging-from-error-callbac.patch
T
Didier Raboud 15bea49681 Backport two upstream hotfixes for uru4000.
Both patches are on top of 0.5.0:

- uru4000: fix race condition on waiting power up irq
- uru4000: fix cancelling of imaging from error callback

Thanks-To: Timo Teräs <timo.teras@iki.fi>
2013-01-15 18:34:21 +01:00

46 lines
1.4 KiB
Diff

From 8a87ba448c62eb14fa51d70ce870dd10b67ba76b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Mon, 3 Dec 2012 09:51:27 +0200
Subject: [PATCH] uru4000: fix cancelling of imaging from error callback
Call error callback before resetting img_transfer to NULL. This
variable is internally used to detect if we are still in imaging
loop and the call to execute_state_change() needs to be postponed.
Since this is the final thing imaging_complete() we can't reset
img_transfer until just before this call.
https://bugs.freedesktop.org/show_bug.cgi?id=57829
---
libfprint/drivers/uru4000.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/libfprint/drivers/uru4000.c b/libfprint/drivers/uru4000.c
index 07e26a4..ccaa87f 100644
--- a/libfprint/drivers/uru4000.c
+++ b/libfprint/drivers/uru4000.c
@@ -789,15 +789,18 @@ static void imaging_complete(struct fpi_ssm *ssm)
int r = ssm->error;
fpi_ssm_free(ssm);
+ /* Report error before exiting imaging loop - the error handler
+ * can request state change, which needs to be postponed to end of
+ * this function. */
+ if (r)
+ fpi_imgdev_session_error(dev, r);
+
g_free(urudev->img_data);
urudev->img_data = NULL;
libusb_free_transfer(urudev->img_transfer);
urudev->img_transfer = NULL;
- if (r)
- fpi_imgdev_session_error(dev, r);
-
r = execute_state_change(dev);
if (r)
fpi_imgdev_session_error(dev, r);
--
1.7.10.4