mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-20 11:13:58 +08:00
drm/radeon: fix regression in UMS CS ioctl
radeon_cs_parser_init is called by both the legacy UMS CS ioctl and the KMS CS ioctl. Protect KMS specific pieces of the code by checking that rdev is not NULL. Reported-by: Michael Burian <michael.burian@sbg.at> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Jerome Glisse <jglisse@redhat.com> Cc: stable@vger.kernel.org Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
0824db38e5
commit
9b00147d9f
@ -147,6 +147,7 @@ static int radeon_cs_sync_rings(struct radeon_cs_parser *p)
|
||||
sync_to_ring, p->ring);
|
||||
}
|
||||
|
||||
/* XXX: note that this is called from the legacy UMS CS ioctl as well */
|
||||
int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)
|
||||
{
|
||||
struct drm_radeon_cs *cs = data;
|
||||
@ -245,23 +246,25 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)
|
||||
}
|
||||
}
|
||||
|
||||
if ((p->cs_flags & RADEON_CS_USE_VM) &&
|
||||
!p->rdev->vm_manager.enabled) {
|
||||
DRM_ERROR("VM not active on asic!\n");
|
||||
return -EINVAL;
|
||||
/* these are KMS only */
|
||||
if (p->rdev) {
|
||||
if ((p->cs_flags & RADEON_CS_USE_VM) &&
|
||||
!p->rdev->vm_manager.enabled) {
|
||||
DRM_ERROR("VM not active on asic!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* we only support VM on SI+ */
|
||||
if ((p->rdev->family >= CHIP_TAHITI) &&
|
||||
((p->cs_flags & RADEON_CS_USE_VM) == 0)) {
|
||||
DRM_ERROR("VM required on SI+!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (radeon_cs_get_ring(p, ring, priority))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* we only support VM on SI+ */
|
||||
if ((p->rdev->family >= CHIP_TAHITI) &&
|
||||
((p->cs_flags & RADEON_CS_USE_VM) == 0)) {
|
||||
DRM_ERROR("VM required on SI+!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (radeon_cs_get_ring(p, ring, priority))
|
||||
return -EINVAL;
|
||||
|
||||
|
||||
/* deal with non-vm */
|
||||
if ((p->chunk_ib_idx != -1) &&
|
||||
((p->cs_flags & RADEON_CS_USE_VM) == 0) &&
|
||||
|
Loading…
Reference in New Issue
Block a user