mirror of https://gitee.com/openkylin/linux.git
media: dvb_frontend: better document the -EPERM condition
Two readonly ioctls can't be allowed if the frontend device is opened in read only mode. Explain why. Reviewed by: Shuah Khan <shuahkh@osg.samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
ceb22c8eee
commit
da5516b5e8
|
@ -1923,9 +1923,23 @@ static int dvb_frontend_ioctl(struct file *file, unsigned int cmd, void *parg)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
if ((file->f_flags & O_ACCMODE) == O_RDONLY &&
|
||||
(_IOC_DIR(cmd) != _IOC_READ || cmd == FE_GET_EVENT ||
|
||||
cmd == FE_DISEQC_RECV_SLAVE_REPLY)) {
|
||||
/*
|
||||
* If the frontend is opened in read-only mode, only the ioctls
|
||||
* that don't interfere with the tune logic should be accepted.
|
||||
* That allows an external application to monitor the DVB QoS and
|
||||
* statistics parameters.
|
||||
*
|
||||
* That matches all _IOR() ioctls, except for two special cases:
|
||||
* - FE_GET_EVENT is part of the tuning logic on a DVB application;
|
||||
* - FE_DISEQC_RECV_SLAVE_REPLY is part of DiSEqC 2.0
|
||||
* setup
|
||||
* So, those two ioctls should also return -EPERM, as otherwise
|
||||
* reading from them would interfere with a DVB tune application
|
||||
*/
|
||||
if ((file->f_flags & O_ACCMODE) == O_RDONLY
|
||||
&& (_IOC_DIR(cmd) != _IOC_READ
|
||||
|| cmd == FE_GET_EVENT
|
||||
|| cmd == FE_DISEQC_RECV_SLAVE_REPLY)) {
|
||||
up(&fepriv->sem);
|
||||
return -EPERM;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue