mirror of https://gitee.com/openkylin/linux.git
Revert "[media] dvb_frontend: return -ENOTTY for unimplement IOCTL"
As reported by Klaus Schmidinger:
"In VDR I use an ioctl() call with FE_READ_UNCORRECTED_BLOCKS on a
device (using stb0899). After this call I check 'errno' for
EOPNOTSUPP to determine whether this device supports this call. This
used to work just fine, until a few months ago I noticed that my
devices using stb0899 didn't display their signal quality in VDR's OSD
any more. After further investigation I found that
ioctl(FE_READ_UNCORRECTED_BLOCKS) no longer returns EOPNOTSUPP, but
rather ENOTTY. And since I stop getting the signal quality in case
any unknown errno value appears, this broke my signal quality query
function."
While the changes reflect what is there at:
http://comments.gmane.org/gmane.linux.kernel/1235728
it does cause regression on userspace. So, revert it to stop the
damage.
This reverts commit 177ffe506c
("[media] dvb_frontend: return -ENOTTY
for unimplement IOCTL").
Reported-by: Klaus Schmidinger <Klaus.Schmidinger@tvdr.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
11e7651432
commit
ac89758697
|
@ -1820,7 +1820,7 @@ static int dvb_frontend_ioctl(struct file *file,
|
|||
struct dvb_frontend *fe = dvbdev->priv;
|
||||
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
||||
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
||||
int err = -ENOTTY;
|
||||
int err = -EOPNOTSUPP;
|
||||
|
||||
dev_dbg(fe->dvb->device, "%s: (%d)\n", __func__, _IOC_NR(cmd));
|
||||
if (fepriv->exit != DVB_FE_NO_EXIT)
|
||||
|
@ -1938,7 +1938,7 @@ static int dvb_frontend_ioctl_properties(struct file *file,
|
|||
}
|
||||
|
||||
} else
|
||||
err = -ENOTTY;
|
||||
err = -EOPNOTSUPP;
|
||||
|
||||
out:
|
||||
kfree(tvp);
|
||||
|
@ -2071,7 +2071,7 @@ static int dvb_frontend_ioctl_legacy(struct file *file,
|
|||
struct dvb_frontend *fe = dvbdev->priv;
|
||||
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
||||
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
||||
int err = -ENOTTY;
|
||||
int err = -EOPNOTSUPP;
|
||||
|
||||
switch (cmd) {
|
||||
case FE_GET_INFO: {
|
||||
|
|
Loading…
Reference in New Issue