On Mon, Aug 11, 2025 at 09:31:00AM +0000, 陈涛涛 Taotao Chen 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. > > Fixes: 048832a3f400 ("drm/i915: Refactor shmem_pwrite() to use kiocb and > write_iter") > Signed-off-by: Taotao Chen <chentao...@didiglobal.com> > --- > drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 6 +++--- > 1 file changed, 3 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 2b53aad915f5..702532eef207 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > @@ -441,12 +441,12 @@ 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; > - > if (written < 0) > return written; > > + if (written != size) > + return -EIO;
That's awkward... I mean, you are right that we cannot overwrite what is returned from the write_iter function. But perhaps this != check here should be before? Or it at least deserves a comment in the code telling what's the intent here. why != size is -EIO... but it was already written :/ > + > return 0; > } > > -- > 2.34.1