mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-30 07:34:12 +08:00
[media] dvb_frontend: do not allow statistic IOCTLs when sleeping
Demodulator cannot perform statistic IOCTLs when it is not tuned. Return -EAGAIN in such case. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
3c16b2b330
commit
48caa6f129
@ -2131,27 +2131,43 @@ static int dvb_frontend_ioctl_legacy(struct file *file,
|
||||
err = fe->ops.read_status(fe, status);
|
||||
break;
|
||||
}
|
||||
|
||||
case FE_READ_BER:
|
||||
if (fe->ops.read_ber)
|
||||
err = fe->ops.read_ber(fe, (__u32*) parg);
|
||||
if (fe->ops.read_ber) {
|
||||
if (fepriv->thread)
|
||||
err = fe->ops.read_ber(fe, (__u32 *) parg);
|
||||
else
|
||||
err = -EAGAIN;
|
||||
}
|
||||
break;
|
||||
|
||||
case FE_READ_SIGNAL_STRENGTH:
|
||||
if (fe->ops.read_signal_strength)
|
||||
err = fe->ops.read_signal_strength(fe, (__u16*) parg);
|
||||
if (fe->ops.read_signal_strength) {
|
||||
if (fepriv->thread)
|
||||
err = fe->ops.read_signal_strength(fe, (__u16 *) parg);
|
||||
else
|
||||
err = -EAGAIN;
|
||||
}
|
||||
break;
|
||||
|
||||
case FE_READ_SNR:
|
||||
if (fe->ops.read_snr)
|
||||
err = fe->ops.read_snr(fe, (__u16*) parg);
|
||||
if (fe->ops.read_snr) {
|
||||
if (fepriv->thread)
|
||||
err = fe->ops.read_snr(fe, (__u16 *) parg);
|
||||
else
|
||||
err = -EAGAIN;
|
||||
}
|
||||
break;
|
||||
|
||||
case FE_READ_UNCORRECTED_BLOCKS:
|
||||
if (fe->ops.read_ucblocks)
|
||||
err = fe->ops.read_ucblocks(fe, (__u32*) parg);
|
||||
if (fe->ops.read_ucblocks) {
|
||||
if (fepriv->thread)
|
||||
err = fe->ops.read_ucblocks(fe, (__u32 *) parg);
|
||||
else
|
||||
err = -EAGAIN;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case FE_DISEQC_RESET_OVERLOAD:
|
||||
if (fe->ops.diseqc_reset_overload) {
|
||||
err = fe->ops.diseqc_reset_overload(fe);
|
||||
|
Loading…
Reference in New Issue
Block a user