|
@@ -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;
|