On Mon, Aug 11, 2025 at 09:30:55AM +0000, 陈涛涛 Taotao Chen wrote: > From: Taotao Chen <chentao...@didiglobal.com> > > Without O_LARGEFILE, file->f_op->write_iter calls > generic_write_check_limits(), which enforces a 2GB (MAX_NON_LFS) limit, > causing -EFBIG on large writes. > > In shmem_pwrite(), this error is later masked as -EIO due to the error > handling order, leading to igt failures like gen9_exec_parse(bb-large). > > Set O_LARGEFILE in __create_shmem() to prevent -EFBIG on large writes. > > Reported-by: kernel test robot <oliver.s...@intel.com> > Closes: https://lore.kernel.org/oe-lkp/202508081029.343192ec-...@intel.com > 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 | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > index e3d188455f67..2b53aad915f5 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > @@ -514,6 +514,11 @@ static int __create_shmem(struct drm_i915_private *i915, > if (IS_ERR(filp)) > return PTR_ERR(filp); > > + /* > + * Prevent -EFBIG by allowing large writes beyond MAX_NON_LFS on shmem > + * objects by setting O_LARGEFILE. > + */ > + filp->f_flags |= O_LARGEFILE;
honest question, is it safe to set this here unconditionally? Cc: Matthew Auld <matthew.a...@intel.com> > obj->filp = filp; > return 0; > } > -- > 2.34.1