gpu: host1x: Forbid relocation address shifting in the firewall
authorDmitry Osipenko <digetx@gmail.com>
Wed, 14 Jun 2017 23:18:35 +0000 (02:18 +0300)
committerThierry Reding <treding@nvidia.com>
Thu, 15 Jun 2017 12:22:32 +0000 (14:22 +0200)
Incorrectly shifted relocation address will cause a lower memory
corruption and likely a hang on a write or a read of an arbitrary data
in case of IOMMU absence. As of now, there is no known use for the
address shifting and adding a proper shifts / sizes validation is a much
more work. Let's forbid shifts in the firewall till a proper validation
is implemented.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Reviewed-by: Erik Faye-Lund <kusmabite@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/host1x/job.c

index 4208329ca2af2b451de6f6ed4da77ad5e1e34113..a911de6386b47207e61876c635f77c05bb1e0e7e 100644 (file)
@@ -330,6 +330,10 @@ static bool check_reloc(struct host1x_reloc *reloc, struct host1x_bo *cmdbuf,
        if (reloc->cmdbuf.bo != cmdbuf || reloc->cmdbuf.offset != offset)
                return false;
 
+       /* relocation shift value validation isn't implemented yet */
+       if (reloc->shift)
+               return false;
+
        return true;
 }