From: kernel test robot <lkp@intel.com>
To: Theodore Ts'o via B4 Relay <devnull+tytso.mit.edu@kernel.org>,
tytso@mit.edu
Cc: oe-kbuild-all@lists.linux.dev, linux-ext4@vger.kernel.org,
linux-api@vger.kernel.org
Subject: Re: [PATCH 3/3] ext4: implemet new ioctls to set and get superblock parameters
Date: Wed, 10 Sep 2025 05:33:07 +0800 [thread overview]
Message-ID: <202509100550.fj5qrPH5-lkp@intel.com> (raw)
In-Reply-To: <20250908-tune2fs-v1-3-e3a6929f3355@mit.edu>
Hi Theodore,
kernel test robot noticed the following build warnings:
[auto build test WARNING on b320789d6883cc00ac78ce83bccbfe7ed58afcf0]
url: https://github.com/intel-lab-lkp/linux/commits/Theodore-Ts-o-via-B4-Relay/ext4-avoid-potential-buffer-over-read-in-parse_apply_sb_mount_options/20250909-111746
base: b320789d6883cc00ac78ce83bccbfe7ed58afcf0
patch link: https://lore.kernel.org/r/20250908-tune2fs-v1-3-e3a6929f3355%40mit.edu
patch subject: [PATCH 3/3] ext4: implemet new ioctls to set and get superblock parameters
config: csky-randconfig-r123-20250910 (https://download.01.org/0day-ci/archive/20250910/202509100550.fj5qrPH5-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 10.5.0
reproduce: (https://download.01.org/0day-ci/archive/20250910/202509100550.fj5qrPH5-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202509100550.fj5qrPH5-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> fs/ext4/ioctl.c:1255:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [addressable] [assigned] [usertype] errors_behavior @@ got restricted __le16 [usertype] s_errors @@
fs/ext4/ioctl.c:1255:29: sparse: expected unsigned short [addressable] [assigned] [usertype] errors_behavior
fs/ext4/ioctl.c:1255:29: sparse: got restricted __le16 [usertype] s_errors
>> fs/ext4/ioctl.c:1267:33: sparse: sparse: cast to restricted __le16
>> fs/ext4/ioctl.c:1267:33: sparse: sparse: cast from restricted __le32
>> fs/ext4/ioctl.c:1323:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] s_raid_stripe_width @@ got restricted __le16 [usertype] @@
fs/ext4/ioctl.c:1323:41: sparse: expected restricted __le32 [usertype] s_raid_stripe_width
fs/ext4/ioctl.c:1323:41: sparse: got restricted __le16 [usertype]
fs/ext4/ioctl.c: note: in included file (through include/linux/uaccess.h, include/linux/sched/task.h, include/linux/sched/signal.h, ...):
arch/csky/include/asm/uaccess.h:110:17: sparse: sparse: cast removes address space '__user' of expression
arch/csky/include/asm/uaccess.h:110:17: sparse: sparse: asm output is not an lvalue
arch/csky/include/asm/uaccess.h:110:17: sparse: sparse: cast removes address space '__user' of expression
arch/csky/include/asm/uaccess.h:110:17: sparse: sparse: cast removes address space '__user' of expression
arch/csky/include/asm/uaccess.h:110:17: sparse: sparse: asm output is not an lvalue
arch/csky/include/asm/uaccess.h:110:17: sparse: sparse: cast removes address space '__user' of expression
arch/csky/include/asm/uaccess.h:110:17: sparse: sparse: generating address of non-lvalue (11)
arch/csky/include/asm/uaccess.h:110:17: sparse: sparse: generating address of non-lvalue (11)
vim +1255 fs/ext4/ioctl.c
1235
1236
1237 #define TUNE_OPS_SUPPORTED (EXT4_TUNE_FL_ERRORS_BEHAVIOR | \
1238 EXT4_TUNE_FL_MNT_COUNT | EXT4_TUNE_FL_MAX_MNT_COUNT | \
1239 EXT4_TUNE_FL_CHECKINTRVAL | EXT4_TUNE_FL_LAST_CHECK_TIME | \
1240 EXT4_TUNE_FL_RESERVED_BLOCKS | EXT4_TUNE_FL_RESERVED_UID | \
1241 EXT4_TUNE_FL_RESERVED_GID | EXT4_TUNE_FL_DEFAULT_MNT_OPTS | \
1242 EXT4_TUNE_FL_DEF_HASH_ALG | EXT4_TUNE_FL_RAID_STRIDE | \
1243 EXT4_TUNE_FL_RAID_STRIPE_WIDTH | EXT4_TUNE_FL_MOUNT_OPTS | \
1244 EXT4_TUNE_FL_FEATURES | EXT4_TUNE_FL_EDIT_FEATURES | \
1245 EXT4_TUNE_FL_FORCE_FSCK)
1246
1247 static int ext4_ioctl_get_tune_sb(struct ext4_sb_info *sbi,
1248 struct ext4_tune_sb_params __user *params)
1249 {
1250 struct ext4_tune_sb_params ret;
1251 struct ext4_super_block *es = sbi->s_es;
1252
1253 memset(&ret, 0, sizeof(ret));
1254 ret.set_flags = TUNE_OPS_SUPPORTED;
> 1255 ret.errors_behavior = es->s_errors;
1256 ret.mnt_count = le16_to_cpu(es->s_mnt_count);
1257 ret.max_mnt_count = le16_to_cpu(es->s_max_mnt_count);
1258 ret.checkinterval = le32_to_cpu(es->s_checkinterval);
1259 ret.last_check_time = le32_to_cpu(es->s_lastcheck);
1260 ret.reserved_blocks = ext4_r_blocks_count(es);
1261 ret.blocks_count = ext4_blocks_count(es);
1262 ret.reserved_uid = ext4_get_resuid(es);
1263 ret.reserved_gid = ext4_get_resgid(es);
1264 ret.default_mnt_opts = le32_to_cpu(es->s_default_mount_opts);
1265 ret.def_hash_alg = es->s_def_hash_version;
1266 ret.raid_stride = le16_to_cpu(es->s_raid_stride);
> 1267 ret.raid_stripe_width = le16_to_cpu(es->s_raid_stripe_width);
1268 strscpy_pad(ret.mount_opts, es->s_mount_opts);
1269 ret.feature_compat = le32_to_cpu(es->s_feature_compat);
1270 ret.feature_incompat = le32_to_cpu(es->s_feature_incompat);
1271 ret.feature_ro_compat = le32_to_cpu(es->s_feature_ro_compat);
1272 ret.set_feature_compat_mask = EXT4_TUNE_SET_COMPAT_SUPP;
1273 ret.set_feature_incompat_mask = EXT4_TUNE_SET_INCOMPAT_SUPP;
1274 ret.set_feature_ro_compat_mask = EXT4_TUNE_SET_RO_COMPAT_SUPP;
1275 ret.clear_feature_compat_mask = EXT4_TUNE_CLEAR_COMPAT_SUPP;
1276 ret.clear_feature_incompat_mask = EXT4_TUNE_CLEAR_INCOMPAT_SUPP;
1277 ret.clear_feature_ro_compat_mask = EXT4_TUNE_CLEAR_RO_COMPAT_SUPP;
1278 if (copy_to_user(params, &ret, sizeof(ret)))
1279 return -EFAULT;
1280 return 0;
1281 }
1282
1283 static void ext4_sb_setparams(struct ext4_sb_info *sbi,
1284 struct ext4_super_block *es, const void *arg)
1285 {
1286 const struct ext4_tune_sb_params *params = arg;
1287
1288 if (params->set_flags & EXT4_TUNE_FL_ERRORS_BEHAVIOR)
1289 es->s_errors = cpu_to_le16(params->errors_behavior);
1290 if (params->set_flags & EXT4_TUNE_FL_MNT_COUNT)
1291 es->s_mnt_count = cpu_to_le16(params->mnt_count);
1292 if (params->set_flags & EXT4_TUNE_FL_MAX_MNT_COUNT)
1293 es->s_max_mnt_count = cpu_to_le16(params->max_mnt_count);
1294 if (params->set_flags & EXT4_TUNE_FL_CHECKINTRVAL)
1295 es->s_checkinterval = cpu_to_le32(params->checkinterval);
1296 if (params->set_flags & EXT4_TUNE_FL_LAST_CHECK_TIME)
1297 es->s_lastcheck = cpu_to_le32(params->last_check_time);
1298 if (params->set_flags & EXT4_TUNE_FL_RESERVED_BLOCKS) {
1299 ext4_fsblk_t blk = params->reserved_blocks;
1300
1301 es->s_r_blocks_count_lo = cpu_to_le32((u32)blk);
1302 es->s_r_blocks_count_hi = cpu_to_le32(blk >> 32);
1303 }
1304 if (params->set_flags & EXT4_TUNE_FL_RESERVED_UID) {
1305 int uid = params->reserved_uid;
1306
1307 es->s_def_resuid = cpu_to_le16(uid & 0xFFFF);
1308 es->s_def_resuid_hi = cpu_to_le16(uid >> 16);
1309 }
1310 if (params->set_flags & EXT4_TUNE_FL_RESERVED_GID) {
1311 int gid = params->reserved_gid;
1312
1313 es->s_def_resgid = cpu_to_le16(gid & 0xFFFF);
1314 es->s_def_resgid_hi = cpu_to_le16(gid >> 16);
1315 }
1316 if (params->set_flags & EXT4_TUNE_FL_DEFAULT_MNT_OPTS)
1317 es->s_default_mount_opts = cpu_to_le32(params->default_mnt_opts);
1318 if (params->set_flags & EXT4_TUNE_FL_DEF_HASH_ALG)
1319 es->s_def_hash_version = params->def_hash_alg;
1320 if (params->set_flags & EXT4_TUNE_FL_RAID_STRIDE)
1321 es->s_raid_stride = cpu_to_le16(params->raid_stride);
1322 if (params->set_flags & EXT4_TUNE_FL_RAID_STRIPE_WIDTH)
> 1323 es->s_raid_stripe_width =
1324 cpu_to_le16(params->raid_stripe_width);
1325 strscpy_pad(es->s_mount_opts, params->mount_opts);
1326 if (params->set_flags & EXT4_TUNE_FL_EDIT_FEATURES) {
1327 es->s_feature_compat |=
1328 cpu_to_le32(params->set_feature_compat_mask);
1329 es->s_feature_incompat |=
1330 cpu_to_le32(params->set_feature_incompat_mask);
1331 es->s_feature_ro_compat |=
1332 cpu_to_le32(params->set_feature_ro_compat_mask);
1333 es->s_feature_compat &=
1334 ~cpu_to_le32(params->clear_feature_compat_mask);
1335 es->s_feature_incompat &=
1336 ~cpu_to_le32(params->clear_feature_incompat_mask);
1337 es->s_feature_ro_compat &=
1338 ~cpu_to_le32(params->clear_feature_ro_compat_mask);
1339 if (params->set_feature_compat_mask &
1340 EXT4_FEATURE_COMPAT_DIR_INDEX)
1341 es->s_def_hash_version = sbi->s_def_hash_version;
1342 if (params->set_feature_incompat_mask &
1343 EXT4_FEATURE_INCOMPAT_CSUM_SEED)
1344 es->s_checksum_seed = cpu_to_le32(sbi->s_csum_seed);
1345 }
1346 if (params->set_flags & EXT4_TUNE_FL_FORCE_FSCK)
1347 es->s_state |= cpu_to_le16(EXT4_ERROR_FS);
1348 }
1349
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2025-09-09 21:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-09 3:15 [PATCH 0/3] ext4: Add support for mounted updates to the superblock via an ioctl Theodore Ts'o
2025-09-09 3:15 ` Theodore Ts'o via B4 Relay
2025-09-09 3:15 ` [PATCH 1/3] ext4: avoid potential buffer over-read in parse_apply_sb_mount_options() Theodore Ts'o
2025-09-09 3:15 ` Theodore Ts'o via B4 Relay
2025-09-11 22:27 ` Darrick J. Wong
2025-09-12 2:12 ` Theodore Ts'o
2025-09-09 3:15 ` [PATCH 2/3] ext4: add support for 32-bit default reserved uid and gid values Theodore Ts'o
2025-09-09 3:15 ` Theodore Ts'o via B4 Relay
2025-09-11 22:31 ` Darrick J. Wong
2025-09-12 2:57 ` Theodore Ts'o
2025-09-09 3:15 ` [PATCH 3/3] ext4: implemet new ioctls to set and get superblock parameters Theodore Ts'o
2025-09-09 3:15 ` Theodore Ts'o via B4 Relay
2025-09-09 21:33 ` kernel test robot [this message]
2025-09-11 22:40 ` Darrick J. Wong
2025-09-12 3:14 ` Theodore Ts'o
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202509100550.fj5qrPH5-lkp@intel.com \
--to=lkp@intel.com \
--cc=devnull+tytso.mit.edu@kernel.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.