On 23.05.2017 13:14, Mikko Perttunen wrote: > Reloc shifts are implemented (see assignment of u32 reloc_addr in do_relocs), > and they are required for VIC job submissions. > The *validation* is unimplemented. Since VIC uses the shifts, we may add a validation for it in a way it is done for the registers / class checks, i.e. compare the per address register shift value. I suppose those registers are documented somewhere(TRM), could you please point me to them (TRM page, reg name)? > On 23.05.2017 03:14, Dmitry Osipenko wrote: >> 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 >> absent. As of now there is no use for the address shifting (at least on >> Tegra20) and adding a proper shifting / sizes validation is much more work. >> Let's forbid it in the firewall till a proper validation is implemented. >> >> Signed-off-by: Dmitry Osipenko <digetx@xxxxxxxxx> >> --- >> drivers/gpu/host1x/job.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/drivers/gpu/host1x/job.c b/drivers/gpu/host1x/job.c >> index 190353944d23..1a1568e64ba8 100644 >> --- a/drivers/gpu/host1x/job.c >> +++ b/drivers/gpu/host1x/job.c >> @@ -332,6 +332,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; >> } >> >> -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html