]> Gentwo Git Trees - linux/.git/commitdiff
prandom: remove next_pseudo_random32
authorMarkus Theil <theil.markus@gmail.com>
Mon, 10 Feb 2025 13:35:56 +0000 (14:35 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Mon, 10 Feb 2025 13:46:17 +0000 (14:46 +0100)
next_pseudo_random32 implements a LCG with known bad statistical
properties and is only used in two pieces of testing code. Remove and
convert the remaining two users to the single PRNG interface in
prandom.h

This removes another option of using an insecure PRNG.

Signed-off-by: Markus Theil <theil.markus@gmail.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
drivers/gpu/drm/i915/selftests/i915_gem.c
drivers/media/test-drivers/vivid/vivid-vid-cap.c
include/linux/prandom.h

index 0727492576be285b542dd205e2a0be4c979efa30..14efa6edd9e63c02abf9e4f93b82fd0683179d53 100644 (file)
@@ -45,13 +45,15 @@ static void trash_stolen(struct drm_i915_private *i915)
        struct i915_ggtt *ggtt = to_gt(i915)->ggtt;
        const u64 slot = ggtt->error_capture.start;
        const resource_size_t size = resource_size(&i915->dsm.stolen);
+       struct rnd_state prng;
        unsigned long page;
-       u32 prng = 0x12345678;
 
        /* XXX: fsck. needs some more thought... */
        if (!i915_ggtt_has_aperture(ggtt))
                return;
 
+       prandom_seed_state(&prng, 0x12345678);
+
        for (page = 0; page < size; page += PAGE_SIZE) {
                const dma_addr_t dma = i915->dsm.stolen.start + page;
                u32 __iomem *s;
@@ -64,8 +66,7 @@ static void trash_stolen(struct drm_i915_private *i915)
 
                s = io_mapping_map_atomic_wc(&ggtt->iomap, slot);
                for (x = 0; x < PAGE_SIZE / sizeof(u32); x++) {
-                       prng = next_pseudo_random32(prng);
-                       iowrite32(prng, &s[x]);
+                       iowrite32(prandom_u32_state(&prng), &s[x]);
                }
                io_mapping_unmap_atomic(s);
        }
index b166d90177c641eed8116e791daeec8822973ff0..166372d5f927ae0c506e39582b32f7ed13d86fe5 100644 (file)
@@ -300,8 +300,10 @@ void vivid_update_quality(struct vivid_dev *dev)
         */
        freq_modulus = (dev->tv_freq - 676 /* (43.25-1) * 16 */) % (6 * 16);
        if (freq_modulus > 2 * 16) {
+               struct rnd_state prng;
+               prandom_seed_state(&prng, dev->tv_freq ^ 0x55);
                tpg_s_quality(&dev->tpg, TPG_QUAL_NOISE,
-                       next_pseudo_random32(dev->tv_freq ^ 0x55) & 0x3f);
+                       prandom_u32_state(&prng) & 0x3f);
                return;
        }
        if (freq_modulus < 12 /*0.75 * 16*/ || freq_modulus > 20 /*1.25 * 16*/)
index f2ed5b72b3d6f21c2c893cf37153c8a565456c9c..ff7dcc3fa1057ae4b9a871ff4938345ad8d360d3 100644 (file)
@@ -47,10 +47,4 @@ static inline void prandom_seed_state(struct rnd_state *state, u64 seed)
        state->s4 = __seed(i, 128U);
 }
 
-/* Pseudo random number generator from numerical recipes. */
-static inline u32 next_pseudo_random32(u32 seed)
-{
-       return seed * 1664525 + 1013904223;
-}
-
 #endif