On Tue, Apr 09, 2013 at 10:13:23AM +0100, Chris Wilson wrote: > As we recompute the remaining timeout after waiting, there is a > potential for that timeout to be less than zero and so need sanitizing. > The timeout is always returned to userspace and validated, so we should > always perform the sanitation. > > Cc: Ville Syrjälä <ville.syrj...@linux.intel.com> > Cc: Ben Widawsky <b...@bwidawsk.net> > Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/i915_gem.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 63c05dd..fcf8492 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -1045,6 +1045,7 @@ static int __wait_seqno(struct intel_ring_buffer *ring, > u32 seqno, > if (timeout) { > struct timespec sleep_time = timespec_sub(now, before); > *timeout = timespec_sub(*timeout, sleep_time); > + set_normalized_timespec(timeout, 0, 0);
This will just set timeout = {0,0}, no? And timespec_sub() should already return a normalized timespec, so I guess the warning would just trigger when sleep_time > timeout. So we should maybe just check for that case, and only then set timeout={0,0}? > } > > switch (end) { > @@ -1053,8 +1054,6 @@ static int __wait_seqno(struct intel_ring_buffer *ring, > u32 seqno, > case -ERESTARTSYS: /* Signal */ > return (int)end; > case 0: /* Timeout */ > - if (timeout) > - set_normalized_timespec(timeout, 0, 0); > return -ETIME; > default: /* Completed */ > WARN_ON(end < 0); /* We're not aware of other errors */ > -- > 1.7.10.4 -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx