]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
dm-verity-fec: replace {MAX,MIN}_RSN with {MIN,MAX}_ROOTS
authorEric Biggers <ebiggers@kernel.org>
Fri, 6 Feb 2026 04:59:27 +0000 (20:59 -0800)
committerMikulas Patocka <mpatocka@redhat.com>
Mon, 9 Mar 2026 14:11:59 +0000 (15:11 +0100)
Every time DM_VERITY_FEC_{MAX,MIN}_RSN are used, they are subtracted
from DM_VERITY_FEC_RSM to get the bounds on the number of roots.
Therefore, replace these with {MIN,MAX}_ROOTS constants which are more
directly useful.  (Note the inversion, where MAX_RSN maps to MIN_ROOTS
and MIN_RSN maps to MAX_ROOTS.)  No functional change.

Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
drivers/md/dm-verity-fec.c
drivers/md/dm-verity-fec.h

index 7a5ca1186af0d5387ba26b912a7a0a970d411067..0622b7496b8dd11549e3c8ad1e3d4d469e50fdc4 100644 (file)
@@ -73,7 +73,7 @@ static int fec_decode_bufs(struct dm_verity *v, struct dm_verity_io *io,
        int r, corrected = 0, res;
        struct dm_buffer *buf;
        unsigned int n, i, j, parity_pos, to_copy;
-       uint16_t par_buf[DM_VERITY_FEC_RSM - DM_VERITY_FEC_MIN_RSN];
+       uint16_t par_buf[DM_VERITY_FEC_MAX_ROOTS];
        u8 *par, *block;
        u64 parity_block;
        struct bio *bio = dm_bio_from_per_bio_data(io, v->ti->per_io_data_size);
@@ -572,8 +572,8 @@ int verity_fec_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v,
 
        } else if (!strcasecmp(arg_name, DM_VERITY_OPT_FEC_ROOTS)) {
                if (sscanf(arg_value, "%hhu%c", &num_c, &dummy) != 1 || !num_c ||
-                   num_c < (DM_VERITY_FEC_RSM - DM_VERITY_FEC_MAX_RSN) ||
-                   num_c > (DM_VERITY_FEC_RSM - DM_VERITY_FEC_MIN_RSN)) {
+                   num_c < DM_VERITY_FEC_MIN_ROOTS ||
+                   num_c > DM_VERITY_FEC_MAX_ROOTS) {
                        ti->error = "Invalid " DM_VERITY_OPT_FEC_ROOTS;
                        return -EINVAL;
                }
index 32ca2bfee1db79b6cd83b0d6ba7579bfa09ecc0b..d8d0e81da2701dee4ae4a7ec128e5b51750494b3 100644 (file)
@@ -13,8 +13,8 @@
 
 /* Reed-Solomon(M, N) parameters */
 #define DM_VERITY_FEC_RSM              255
-#define DM_VERITY_FEC_MAX_RSN          253
-#define DM_VERITY_FEC_MIN_RSN          231     /* ~10% space overhead */
+#define DM_VERITY_FEC_MIN_ROOTS        2       /* RS(255, 253): ~0.8% space overhead */
+#define DM_VERITY_FEC_MAX_ROOTS        24      /* RS(255, 231): ~10% space overhead */
 
 /* buffers for deinterleaving and decoding */
 #define DM_VERITY_FEC_BUF_RS_BITS      4       /* 1 << RS blocks per buffer */
@@ -47,8 +47,7 @@ struct dm_verity_fec {
 /* per-bio data */
 struct dm_verity_fec_io {
        struct rs_control *rs;  /* Reed-Solomon state */
-       /* erasures for decode_rs8 */
-       int erasures[DM_VERITY_FEC_RSM - DM_VERITY_FEC_MIN_RSN + 1];
+       int erasures[DM_VERITY_FEC_MAX_ROOTS + 1]; /* erasures for decode_rs8 */
        u8 *output;             /* buffer for corrected output */
        unsigned int level;             /* recursion level */
        unsigned int nbufs;             /* number of buffers allocated */