]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
crypto: qat - fix seq_file position update in adf_ring_next()
authorGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Mon, 14 Jul 2025 07:10:29 +0000 (08:10 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sun, 27 Jul 2025 12:41:45 +0000 (22:41 +1000)
The `adf_ring_next()` function in the QAT debug transport interface
fails to correctly update the position index when reaching the end of
the ring elements. This triggers the following kernel warning when
reading ring files, such as
/sys/kernel/debug/qat_c6xx_<D:B:D:F>/transport/bank_00/ring_00:

   [27725.022965] seq_file: buggy .next function adf_ring_next [intel_qat] did not update position index

Ensure that the `*pos` index is incremented before returning NULL when
after the last element in the ring is found, satisfying the seq_file API
requirements and preventing the warning.

Fixes: a672a9dc872e ("crypto: qat - Intel(R) QAT transport code")
Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Reviewed-by: Ahsan Atta <ahsan.atta@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/intel/qat/qat_common/adf_transport_debug.c

index e2dd568b87b519a00efeeeb03e551eaf28b3f206..621b5d3dfcef91405426f3209daafd4dc36b13f2 100644 (file)
@@ -31,8 +31,10 @@ static void *adf_ring_next(struct seq_file *sfile, void *v, loff_t *pos)
        struct adf_etr_ring_data *ring = sfile->private;
 
        if (*pos >= (ADF_SIZE_TO_RING_SIZE_IN_BYTES(ring->ring_size) /
-                    ADF_MSG_SIZE_TO_BYTES(ring->msg_size)))
+                    ADF_MSG_SIZE_TO_BYTES(ring->msg_size))) {
+               (*pos)++;
                return NULL;
+       }
 
        return ring->base_addr +
                (ADF_MSG_SIZE_TO_BYTES(ring->msg_size) * (*pos)++);