This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: rainshadow-cec: avoid -Wmaybe-uninitialized warning again
Author:  Arnd Bergmann <a...@arndb.de>
Date:    Wed Jun 21 19:10:32 2017 -0300

Back in April I created a patch to address a false-positive warning:

drivers/media/usb/rainshadow-cec/rainshadow-cec.c: In function 
'rain_irq_work_handler':
drivers/media/usb/rainshadow-cec/rainshadow-cec.c:171:31: error: 'data' may be 
used uninitialized in this function [-Werror=maybe-uninitialized]

My patch was totally wrong and introduced a real bug, and Colin Ian King 
thankfully
noticed it now and fixed my mistake. Unfortunately, fixing the actual 
uninitialized
data in this case brought back the original bogus warning.

This is a new version of the patch, which simplifies the code to the point where
gcc notices the behavior is correct.

Fixes: ca33784ba494 ("[media] rainshadow-cec: ensure exit_loop is intialized")
Fixes: ea6a69defd3311 ("[media] rainshadow-cec: avoid -Wmaybe-uninitialized 
warning")

Cc: Colin Ian King <colin.k...@canonical.com>
Signed-off-by: Arnd Bergmann <a...@arndb.de>
Signed-off-by: Hans Verkuil <hansv...@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>

 drivers/media/usb/rainshadow-cec/rainshadow-cec.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

---

diff --git a/drivers/media/usb/rainshadow-cec/rainshadow-cec.c 
b/drivers/media/usb/rainshadow-cec/rainshadow-cec.c
index f203699e9c1b..65692576690f 100644
--- a/drivers/media/usb/rainshadow-cec/rainshadow-cec.c
+++ b/drivers/media/usb/rainshadow-cec/rainshadow-cec.c
@@ -116,21 +116,19 @@ static void rain_irq_work_handler(struct work_struct 
*work)
 
        while (true) {
                unsigned long flags;
-               bool exit_loop = false;
                char data;
 
                spin_lock_irqsave(&rain->buf_lock, flags);
-               if (rain->buf_len) {
-                       data = rain->buf[rain->buf_rd_idx];
-                       rain->buf_len--;
-                       rain->buf_rd_idx = (rain->buf_rd_idx + 1) & 0xff;
-               } else {
-                       exit_loop = true;
+               if (!rain->buf_len) {
+                       spin_unlock_irqrestore(&rain->buf_lock, flags);
+                       break;
                }
-               spin_unlock_irqrestore(&rain->buf_lock, flags);
 
-               if (exit_loop)
-                       break;
+               data = rain->buf[rain->buf_rd_idx];
+               rain->buf_len--;
+               rain->buf_rd_idx = (rain->buf_rd_idx + 1) & 0xff;
+
+               spin_unlock_irqrestore(&rain->buf_lock, flags);
 
                if (!rain->cmd_started && data != '?')
                        continue;

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to