Going to hit us with a katana, Taotao?
On Thu, Aug 21, 2025 at 11:11 PM 陈涛涛 Taotao Chen <chentao...@didiglobal.com> wrote: > > From: Taotao Chen <chentao...@didiglobal.com> > > shmem_pwrite() currently checks for short writes before negative error > codes, which can overwrite real errors (e.g., -EFBIG) with -EIO. > Reorder the checks to return negative errors first, then handle short > writes. > > Signed-off-by: Taotao Chen <chentao...@didiglobal.com> > Reviewed-by: Andi Shyti <andi.sh...@linux.intel.com> > --- > v2: > - Drop Fixes tag > - Add Reviewed-by from Andi > - Add code comments (suggested by Rodrigo) > > drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > index b9dae15c1d16..26dda55a07ff 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > @@ -441,11 +441,20 @@ shmem_pwrite(struct drm_i915_gem_object *obj, > written = file->f_op->write_iter(&kiocb, &iter); > BUG_ON(written == -EIOCBQUEUED); > > - if (written != size) > - return -EIO; > - > + /* > + * First, check if write_iter returned a negative error. > + * If the write failed, return the real error code immediately. > + * This prevents it from being overwritten by the short write check > below. > + */ > if (written < 0) > return written; > + /* > + * Check for a short write (written bytes != requested size). > + * Even if some data was written, return -EIO to indicate that the > + * write was not fully completed. > + */ > + if (written != size) > + return -EIO; > > return 0; > } > -- > 2.34.1