Hello Darrick J. Wong, The patch 908ce71e54f8: "xfs: allow setting and clearing of log incompat feature flags" from Aug 8, 2021, leads to the following Smatch static checker warning: fs/xfs/xfs_mount.c:1315 xfs_add_incompat_log_feature() warn: missing error code 'error' fs/xfs/xfs_mount.c 1280 int 1281 xfs_add_incompat_log_feature( 1282 struct xfs_mount *mp, 1283 uint32_t feature) 1284 { 1285 struct xfs_dsb *dsb; 1286 int error; 1287 1288 ASSERT(hweight32(feature) == 1); 1289 ASSERT(!(feature & XFS_SB_FEAT_INCOMPAT_LOG_UNKNOWN)); 1290 1291 /* 1292 * Force the log to disk and kick the background AIL thread to reduce 1293 * the chances that the bwrite will stall waiting for the AIL to unpin 1294 * the primary superblock buffer. This isn't a data integrity 1295 * operation, so we don't need a synchronous push. 1296 */ 1297 error = xfs_log_force(mp, XFS_LOG_SYNC); 1298 if (error) 1299 return error; 1300 xfs_ail_push_all(mp->m_ail); 1301 1302 /* 1303 * Lock the primary superblock buffer to serialize all callers that 1304 * are trying to set feature bits. 1305 */ 1306 xfs_buf_lock(mp->m_sb_bp); 1307 xfs_buf_hold(mp->m_sb_bp); 1308 1309 if (xfs_is_shutdown(mp)) { 1310 error = -EIO; 1311 goto rele; 1312 } 1313 1314 if (xfs_sb_has_incompat_log_feature(&mp->m_sb, feature)) --> 1315 goto rele; ^^^^^^^^^ It's not clear to me, why this old code is suddenly showing up as a new warning... But it does feel like it should be an error path. 1316 1317 /* 1318 * Write the primary superblock to disk immediately, because we need 1319 * the log_incompat bit to be set in the primary super now to protect 1320 * the log items that we're going to commit later. 1321 */ 1322 dsb = mp->m_sb_bp->b_addr; 1323 xfs_sb_to_disk(dsb, &mp->m_sb); 1324 dsb->sb_features_log_incompat |= cpu_to_be32(feature); 1325 error = xfs_bwrite(mp->m_sb_bp); 1326 if (error) 1327 goto shutdown; 1328 1329 /* 1330 * Add the feature bits to the incore superblock before we unlock the 1331 * buffer. 1332 */ 1333 xfs_sb_add_incompat_log_features(&mp->m_sb, feature); 1334 xfs_buf_relse(mp->m_sb_bp); 1335 1336 /* Log the superblock to disk. */ 1337 return xfs_sync_sb(mp, false); 1338 shutdown: 1339 xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); 1340 rele: 1341 xfs_buf_relse(mp->m_sb_bp); 1342 return error; 1343 } regards, dan carpenter