mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
drm: Fix FD ownership check in drm_master_check_perm()
[ Upstream commit5a6c9a05e5] The DRM subsystem keeps a record of the owner of a DRM device file descriptor using thread group ID (TGID) instead of process ID (PID), to ensures all threads within the same userspace process are considered the owner. However, the DRM master ownership check compares the current thread's PID against the record, so the thread is incorrectly considered to be not the FD owner if the PID is not equal to the TGID. This causes DRM ioctls to be denied master privileges, even if the same thread that opened the FD performs an ioctl. Fix this by checking TGID. Fixes:4230cea89c("drm: Track clients by tgid and not tid") Signed-off-by: Lingkai Dong <lingkai.dong@arm.com> Reviewed-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: <stable@vger.kernel.org> # v6.4+ Link: https://patchwork.freedesktop.org/patch/msgid/PA6PR08MB107665920BE9A96658CDA04CE8884A@PA6PR08MB10766.eurprd08.prod.outlook.com Signed-off-by: Christian König <christian.koenig@amd.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
031ddd2800
commit
c9b26d9e43
|
|
@ -236,7 +236,7 @@ static int
|
|||
drm_master_check_perm(struct drm_device *dev, struct drm_file *file_priv)
|
||||
{
|
||||
if (file_priv->was_master &&
|
||||
rcu_access_pointer(file_priv->pid) == task_pid(current))
|
||||
rcu_access_pointer(file_priv->pid) == task_tgid(current))
|
||||
return 0;
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user