On Wed, May 30, 2012 at 10:09 AM,  <alexdeucher at gmail.com> wrote:
> From: Alex Deucher <alexander.deucher at amd.com>
>
> 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 at sbg.at>
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
Reviewed-by: Jerome Glisse <jglisse at redhat.com>
> Cc: stable at vger.kernel.org
> ---
> ?drivers/gpu/drm/radeon/radeon_cs.c | ? 31 +++++++++++++++++--------------
> ?1 files changed, 17 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_cs.c 
> b/drivers/gpu/drm/radeon/radeon_cs.c
> index 0137689..142f894 100644
> --- a/drivers/gpu/drm/radeon/radeon_cs.c
> +++ b/drivers/gpu/drm/radeon/radeon_cs.c
> @@ -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,22 +246,24 @@ 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;
> - ? ? ? }
> -
> - ? ? ? /* 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;
> - ? ? ? }
> + ? ? ? /* 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;
> + ? ? ? ? ? ? ? }
>
> - ? ? ? 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) &&
> --
> 1.7.7.5
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to