提交 ee362991 编写于 作者: H Hans de Goede 提交者: Mauro Carvalho Chehab

[media] gspca_main: Simplify read mode memory type checks

gspca_dev->memory == GSPCA_MEMORY_NO implies gspca_dev->nframes == 0,
so there is no need to check for both in dev_poll. The check in
dev_read also is more complex then needed, as dqbuf which dev_read
calls already does all necessary checks. Moreover dqbuf is holding
the proper locks while checking where as dev_read itself is not.
Signed-off-by: NHans de Goede <hdegoede@redhat.com>
Acked-by: NJean-Francois Moine <moinejf@free.fr>
Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
上级 d642de2e
......@@ -2019,9 +2019,7 @@ static unsigned int dev_poll(struct file *file, poll_table *wait)
poll_wait(file, &gspca_dev->wq, wait);
/* if reqbufs is not done, the user would use read() */
if (gspca_dev->nframes == 0) {
if (gspca_dev->memory != GSPCA_MEMORY_NO)
return POLLERR; /* not the 1st time */
if (gspca_dev->memory == GSPCA_MEMORY_NO) {
ret = read_alloc(gspca_dev, file);
if (ret != 0)
return POLLERR;
......@@ -2053,18 +2051,10 @@ static ssize_t dev_read(struct file *file, char __user *data,
PDEBUG(D_FRAM, "read (%zd)", count);
if (!gspca_dev->present)
return -ENODEV;
switch (gspca_dev->memory) {
case GSPCA_MEMORY_NO: /* first time */
if (gspca_dev->memory == GSPCA_MEMORY_NO) { /* first time ? */
ret = read_alloc(gspca_dev, file);
if (ret != 0)
return ret;
break;
case GSPCA_MEMORY_READ:
if (gspca_dev->capt_file == file)
break;
/* fall thru */
default:
return -EINVAL;
}
/* get a frame */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册