提交 f6f7b58e 编写于 作者: M Mauro Carvalho Chehab

[media] airspy: fix bit set/clean mess on s->flags

As warned by smatch:
	drivers/media/usb/airspy/airspy.c:541 airspy_start_streaming() warn: test_bit() takes a bit number
	drivers/media/usb/airspy/airspy.c:569 airspy_start_streaming() warn: test_bit() takes a bit number
	drivers/media/usb/airspy/airspy.c:605 airspy_stop_streaming() warn: test_bit() takes a bit number

set_bit/clear_bit argument is the bit number, and not 1 << bit.

Thankfully, one of the bits was not used (URB_BUF), with would
otherwise cause a driver misfunctioning.

Clean this mess by always using set_bit/clear_bit/test_bit and
removing the unused bit.
Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
上级 b44d3669
...@@ -104,9 +104,8 @@ struct airspy_frame_buf { ...@@ -104,9 +104,8 @@ struct airspy_frame_buf {
}; };
struct airspy { struct airspy {
#define POWER_ON (1 << 1) #define POWER_ON 1
#define URB_BUF (1 << 2) #define USB_STATE_URB_BUF 2
#define USB_STATE_URB_BUF (1 << 3)
unsigned long flags; unsigned long flags;
struct device *dev; struct device *dev;
...@@ -359,7 +358,7 @@ static int airspy_submit_urbs(struct airspy *s) ...@@ -359,7 +358,7 @@ static int airspy_submit_urbs(struct airspy *s)
static int airspy_free_stream_bufs(struct airspy *s) static int airspy_free_stream_bufs(struct airspy *s)
{ {
if (s->flags & USB_STATE_URB_BUF) { if (test_bit(USB_STATE_URB_BUF, &s->flags)) {
while (s->buf_num) { while (s->buf_num) {
s->buf_num--; s->buf_num--;
dev_dbg(s->dev, "free buf=%d\n", s->buf_num); dev_dbg(s->dev, "free buf=%d\n", s->buf_num);
...@@ -368,7 +367,7 @@ static int airspy_free_stream_bufs(struct airspy *s) ...@@ -368,7 +367,7 @@ static int airspy_free_stream_bufs(struct airspy *s)
s->dma_addr[s->buf_num]); s->dma_addr[s->buf_num]);
} }
} }
s->flags &= ~USB_STATE_URB_BUF; clear_bit(USB_STATE_URB_BUF, &s->flags);
return 0; return 0;
} }
...@@ -394,7 +393,7 @@ static int airspy_alloc_stream_bufs(struct airspy *s) ...@@ -394,7 +393,7 @@ static int airspy_alloc_stream_bufs(struct airspy *s)
dev_dbg(s->dev, "alloc buf=%d %p (dma %llu)\n", s->buf_num, dev_dbg(s->dev, "alloc buf=%d %p (dma %llu)\n", s->buf_num,
s->buf_list[s->buf_num], s->buf_list[s->buf_num],
(long long)s->dma_addr[s->buf_num]); (long long)s->dma_addr[s->buf_num]);
s->flags |= USB_STATE_URB_BUF; set_bit(USB_STATE_URB_BUF, &s->flags);
} }
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册