i915: cast before shifting in i915_pte_count
Subsystems (2)
PATCH 1/1 i915: cast before shifting in i915_pte_count
Otherwise a pde_shift big enough to overflow a u32 will be truncated before assignment
Signed-off-by Alan Cox <[email protected]>
--- drivers/gpu/drm/i915/i915_gem_gtt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/i915/i915_gem_gtt.h +1 -1
@@ -418,7 +418,7 @@ static inline uint32_t i915_pte_index(uint64_t address, uint32_t pde_shift)static inline uint32_t i915_pte_count (uint64_t addr,size_t length,uint32_t pde_shift) { -const uint64_t mask = ~((1 << pde_shift) -1 ); +const uint64_t mask = ~((1ULL << pde_shift) -1 );uint64_t end;WARN_ON (length ==0 );
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Daniel Vetter
AppliedQuoted 4 lines · Alan
Otherwise a
pde_shiftbig enough to overflow a u32 will be truncated before assignmentSigned-off-by Alan Cox <[email protected]>
Applied to drm-intel-next-queued, with a note why we never hit this bug currently. But the units here are quite confused ...
-Daniel
Quoted 22 lines
--- drivers/gpu/drm/i915/i915_gem_gtt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/gpu/drm/i915/i915_gem_gtt.h +1
-1@@ -418,7 +418,7 @@ static inline uint32_t i915_pte_index(uint64_t address, uint32_t pde_shift)static inline uint32_t i915_pte_count (uint64_t addr,size_t length,uint32_t pde_shift) { -const uint64_t mask = ~((1 << pde_shift) -1 ); +const uint64_t mask = ~((1ULL << pde_shift) -1 );uint64_t end;WARN_ON (length ==0 );_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Signature · 7 lines
Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel