media: dvb_frontend: fix return values for FE_SET_PROPERTY
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 18 Sep 2017 12:21:37 +0000 (08:21 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 11 Oct 2017 16:58:40 +0000 (12:58 -0400)
commit259a41d9ae8f3689742267f340ad2b159d00b302
tree98f94d6f682e40c895ba13f7e426dabd07626cfd
parentda5516b5e81d45a96291823620f6c820178dc055
media: dvb_frontend: fix return values for FE_SET_PROPERTY

There are several problems with regards to the return of
FE_SET_PROPERTY. The original idea were to return per-property
return codes via tvp->result field, and to return an updated
set of values.

However, that never worked. What's actually implemented is:

- the FE_SET_PROPERTY implementation doesn't call .get_frontend
  callback in order to get the actual parameters after return;

- the tvp->result field is only filled if there's no error.
  So, it is always filled with zero;

- FE_SET_PROPERTY doesn't call memdup_user() nor any other
  copy_to_user() function. So, any changes to the properties
  will be lost;

- FE_SET_PROPERTY is declared as a write-only ioctl (IOW).

While we could fix the above, it could cause regressions.

So, let's just assume what the code really does, updating
the documentation accordingly and removing the logic that
would update the discarded tvp->result.

Reviewed-by: Shuah Khan <shuahkh@osg.samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Documentation/media/uapi/dvb/fe-get-property.rst
drivers/media/dvb-core/dvb_frontend.c
include/uapi/linux/dvb/frontend.h