mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
media fixes for v4.5-rc8
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJW4xgMAAoJEAhfPr2O5OEVKVAP/1hSigOgCEWrCbXL+mp9xl2P WXYA87O0ckk6rfIKOi6tv72bkxUlrik9t/F6DIzQejh5SO4IxWeDr8v4iW9Zq+PT r7ondfq7Sw0VxZfJ/7sulDvtySVBL7V1osJGocrKhtXknmlHdspMX4tuEkB8HYy/ dCpl5yf9ZGYXJrxkRC9rCWFzyEyI8Mg9GE0YORlYYSjaRbl9mYQNQQ6pFjRzlR99 MaPaSfMA7UPQvapyUNplgqHvq8Bo459cLiAL2aR2Z3zdJr8aJvpDYaGBGdzdBIoM kR55OrDfS/DPX9sou2Xsmty6bMRAynkzI6lGWd5muGfznJ2O5j2s1AY0pkX+wj6O 7S1AfCG8ryi7rvUsfxHkBV6mE2vbKtHU9CnZBIu25B7Dtp2rKNimPh7FqPR6U38h snWSGNCxayJchAxBBkhXE5BNdCpopLCed6Y9jIQbTelzghNhFKP96APIwHOKvfAq WmfHT6/diTst7Bu859WS/1UqCf1xIcY6jqofz7El/GIECbAxR6k9eFaPW55tecss M/60e58U6MLVZxZUqSykKw1bTXq7PeceH5b3dpg1Yv/ST5kNqZZS082rHi1Qpv5o 9llLHIwa/Nu+v4bjeLbiHPOK2VOTcMZp9RAknc4TNRuy3FCX0ntWxGLq24r2FPg+ UzRT+MzaP9slkbb2M80B =btba -----END PGP SIGNATURE----- Merge tag 'media/v4.5-5' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media fix from Mauro Carvalho Chehab: "One last time fix: It adds a code that prevents some media tools like media-ctl to hide some entities that have their IDs out of the range expected by those apps" * tag 'media/v4.5-5' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: [media] media-device: map new functions into old types for legacy API
This commit is contained in:
commit
95f41fb203
@ -20,6 +20,9 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* We need to access legacy defines from linux/media.h */
|
||||
#define __NEED_MEDIA_LEGACY_API
|
||||
|
||||
#include <linux/compat.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/idr.h>
|
||||
@ -115,6 +118,26 @@ static long media_device_enum_entities(struct media_device *mdev,
|
||||
u_ent.group_id = 0; /* Unused */
|
||||
u_ent.pads = ent->num_pads;
|
||||
u_ent.links = ent->num_links - ent->num_backlinks;
|
||||
|
||||
/*
|
||||
* Workaround for a bug at media-ctl <= v1.10 that makes it to
|
||||
* do the wrong thing if the entity function doesn't belong to
|
||||
* either MEDIA_ENT_F_OLD_BASE or MEDIA_ENT_F_OLD_SUBDEV_BASE
|
||||
* Ranges.
|
||||
*
|
||||
* Non-subdevices are expected to be at the MEDIA_ENT_F_OLD_BASE,
|
||||
* or, otherwise, will be silently ignored by media-ctl when
|
||||
* printing the graphviz diagram. So, map them into the devnode
|
||||
* old range.
|
||||
*/
|
||||
if (ent->function < MEDIA_ENT_F_OLD_BASE ||
|
||||
ent->function > MEDIA_ENT_T_DEVNODE_UNKNOWN) {
|
||||
if (is_media_entity_v4l2_subdev(ent))
|
||||
u_ent.type = MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN;
|
||||
else if (ent->function != MEDIA_ENT_F_IO_V4L)
|
||||
u_ent.type = MEDIA_ENT_T_DEVNODE_UNKNOWN;
|
||||
}
|
||||
|
||||
memcpy(&u_ent.raw, &ent->info, sizeof(ent->info));
|
||||
if (copy_to_user(uent, &u_ent, sizeof(u_ent)))
|
||||
return -EFAULT;
|
||||
|
@ -120,7 +120,7 @@ struct media_device_info {
|
||||
|
||||
#define MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN MEDIA_ENT_F_OLD_SUBDEV_BASE
|
||||
|
||||
#ifndef __KERNEL__
|
||||
#if !defined(__KERNEL__) || defined(__NEED_MEDIA_LEGACY_API)
|
||||
|
||||
/*
|
||||
* Legacy symbols used to avoid userspace compilation breakages
|
||||
@ -133,6 +133,10 @@ struct media_device_info {
|
||||
#define MEDIA_ENT_TYPE_MASK 0x00ff0000
|
||||
#define MEDIA_ENT_SUBTYPE_MASK 0x0000ffff
|
||||
|
||||
/* End of the old subdev reserved numberspace */
|
||||
#define MEDIA_ENT_T_DEVNODE_UNKNOWN (MEDIA_ENT_T_DEVNODE | \
|
||||
MEDIA_ENT_SUBTYPE_MASK)
|
||||
|
||||
#define MEDIA_ENT_T_DEVNODE MEDIA_ENT_F_OLD_BASE
|
||||
#define MEDIA_ENT_T_DEVNODE_V4L MEDIA_ENT_F_IO_V4L
|
||||
#define MEDIA_ENT_T_DEVNODE_FB (MEDIA_ENT_T_DEVNODE + 2)
|
||||
|
Loading…
Reference in New Issue
Block a user