Merge tag 'random-6.1-rc1-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 16 Oct 2022 22:27:07 +0000 (15:27 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 16 Oct 2022 22:27:07 +0000 (15:27 -0700)
Pull more random number generator updates from Jason Donenfeld:
 "This time with some large scale treewide cleanups.

  The intent of this pull is to clean up the way callers fetch random
  integers. The current rules for doing this right are:

   - If you want a secure or an insecure random u64, use get_random_u64()

   - If you want a secure or an insecure random u32, use get_random_u32()

     The old function prandom_u32() has been deprecated for a while
     now and is just a wrapper around get_random_u32(). Same for
     get_random_int().

   - If you want a secure or an insecure random u16, use get_random_u16()

   - If you want a secure or an insecure random u8, use get_random_u8()

   - If you want secure or insecure random bytes, use get_random_bytes().

     The old function prandom_bytes() has been deprecated for a while
     now and has long been a wrapper around get_random_bytes()

   - If you want a non-uniform random u32, u16, or u8 bounded by a
     certain open interval maximum, use prandom_u32_max()

     I say "non-uniform", because it doesn't do any rejection sampling
     or divisions. Hence, it stays within the prandom_*() namespace, not
     the get_random_*() namespace.

     I'm currently investigating a "uniform" function for 6.2. We'll see
     what comes of that.

  By applying these rules uniformly, we get several benefits:

   - By using prandom_u32_max() with an upper-bound that the compiler
     can prove at compile-time is ≤65536 or ≤256, internally
     get_random_u16() or get_random_u8() is used, which wastes fewer
     batched random bytes, and hence has higher throughput.

   - By using prandom_u32_max() instead of %, when the upper-bound is
     not a constant, division is still avoided, because
     prandom_u32_max() uses a faster multiplication-based trick instead.

   - By using get_random_u16() or get_random_u8() in cases where the
     return value is intended to indeed be a u16 or a u8, we waste fewer
     batched random bytes, and hence have higher throughput.

  This series was originally done by hand while I was on an airplane
  without Internet. Later, Kees and I worked on retroactively figuring
  out what could be done with Coccinelle and what had to be done
  manually, and then we split things up based on that.

  So while this touches a lot of files, the actual amount of code that's
  hand fiddled is comfortably small"

* tag 'random-6.1-rc1-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random:
  prandom: remove unused functions
  treewide: use get_random_bytes() when possible
  treewide: use get_random_u32() when possible
  treewide: use get_random_{u8,u16}() when possible, part 2
  treewide: use get_random_{u8,u16}() when possible, part 1
  treewide: use prandom_u32_max() when possible, part 2
  treewide: use prandom_u32_max() when possible, part 1

185 files changed:
Documentation/networking/filter.rst
arch/arm/kernel/process.c
arch/arm/kernel/signal.c
arch/arm64/kernel/process.c
arch/arm64/kernel/syscall.c
arch/loongarch/kernel/process.c
arch/loongarch/kernel/vdso.c
arch/mips/kernel/process.c
arch/mips/kernel/vdso.c
arch/parisc/kernel/process.c
arch/parisc/kernel/sys_parisc.c
arch/parisc/kernel/vdso.c
arch/powerpc/crypto/crc-vpmsum_test.c
arch/powerpc/kernel/process.c
arch/s390/kernel/process.c
arch/s390/kernel/vdso.c
arch/s390/mm/mmap.c
arch/sparc/vdso/vma.c
arch/um/kernel/process.c
arch/x86/entry/vdso/vma.c
arch/x86/kernel/cpu/amd.c
arch/x86/kernel/module.c
arch/x86/kernel/process.c
arch/x86/mm/pat/cpa-test.c
block/blk-crypto-fallback.c
crypto/async_tx/raid6test.c
crypto/testmgr.c
drivers/block/drbd/drbd_receiver.c
drivers/char/random.c
drivers/dma/dmatest.c
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
drivers/gpu/drm/i915/i915_gem_gtt.c
drivers/gpu/drm/i915/selftests/i915_selftest.c
drivers/gpu/drm/tests/drm_buddy_test.c
drivers/gpu/drm/tests/drm_mm_test.c
drivers/infiniband/core/cma.c
drivers/infiniband/hw/cxgb4/cm.c
drivers/infiniband/hw/cxgb4/id_table.c
drivers/infiniband/hw/hfi1/tid_rdma.c
drivers/infiniband/hw/hns/hns_roce_ah.c
drivers/infiniband/hw/mlx4/mad.c
drivers/infiniband/ulp/ipoib/ipoib_cm.c
drivers/infiniband/ulp/rtrs/rtrs-clt.c
drivers/md/bcache/request.c
drivers/md/raid5-cache.c
drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
drivers/media/test-drivers/vivid/vivid-radio-rx.c
drivers/media/test-drivers/vivid/vivid-touch-cap.c
drivers/misc/habanalabs/gaudi2/gaudi2.c
drivers/mmc/core/core.c
drivers/mmc/host/dw_mmc.c
drivers/mtd/nand/raw/nandsim.c
drivers/mtd/tests/mtd_nandecctest.c
drivers/mtd/tests/speedtest.c
drivers/mtd/tests/stresstest.c
drivers/mtd/ubi/debug.c
drivers/mtd/ubi/debug.h
drivers/net/bonding/bond_main.c
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/cnic.c
drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c
drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_io.c
drivers/net/ethernet/rocker/rocker_main.c
drivers/net/hamradio/baycom_epp.c
drivers/net/hamradio/hdlcdrv.c
drivers/net/hamradio/yam.c
drivers/net/phy/at803x.c
drivers/net/wireguard/selftest/allowedips.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c
drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
drivers/net/wireless/marvell/mwifiex/cfg80211.c
drivers/net/wireless/microchip/wilc1000/cfg80211.c
drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
drivers/net/wireless/st/cw1200/wsm.c
drivers/net/wireless/ti/wlcore/main.c
drivers/nvme/common/auth.c
drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
drivers/scsi/fcoe/fcoe_ctlr.c
drivers/scsi/lpfc/lpfc_hbadisc.c
drivers/scsi/qedi/qedi_main.c
drivers/target/iscsi/cxgbit/cxgbit_cm.c
drivers/thunderbolt/xdomain.c
drivers/video/fbdev/uvesafb.c
fs/ceph/inode.c
fs/ceph/mdsmap.c
fs/exfat/inode.c
fs/ext2/ialloc.c
fs/ext4/ialloc.c
fs/ext4/ioctl.c
fs/ext4/mmp.c
fs/ext4/super.c
fs/f2fs/gc.c
fs/f2fs/namei.c
fs/f2fs/segment.c
fs/fat/inode.c
fs/nfsd/nfs4state.c
fs/ntfs3/fslog.c
fs/ubifs/debug.c
fs/ubifs/journal.c
fs/ubifs/lpt_commit.c
fs/ubifs/tnc_commit.c
fs/xfs/libxfs/xfs_alloc.c
fs/xfs/libxfs/xfs_ialloc.c
fs/xfs/xfs_error.c
fs/xfs/xfs_icache.c
fs/xfs/xfs_log.c
include/linux/nodemask.h
include/linux/prandom.h
include/linux/random.h
include/net/netfilter/nf_queue.h
include/net/red.h
include/net/sock.h
kernel/bpf/bloom_filter.c
kernel/bpf/core.c
kernel/bpf/hashtab.c
kernel/bpf/verifier.c
kernel/kcsan/selftest.c
kernel/locking/test-ww_mutex.c
kernel/time/clocksource.c
lib/cmdline_kunit.c
lib/fault-inject.c
lib/find_bit_benchmark.c
lib/kobject.c
lib/random32.c
lib/reed_solomon/test_rslib.c
lib/sbitmap.c
lib/test-string_helpers.c
lib/test_fprobe.c
lib/test_hexdump.c
lib/test_kprobes.c
lib/test_list_sort.c
lib/test_min_heap.c
lib/test_objagg.c
lib/test_rhashtable.c
lib/test_vmalloc.c
lib/uuid.c
mm/kasan/kasan_test.c
mm/shmem.c
mm/slab.c
mm/slub.c
net/802/garp.c
net/802/mrp.c
net/ceph/mon_client.c
net/ceph/osd_client.c
net/core/neighbour.c
net/core/pktgen.c
net/core/stream.c
net/dccp/ipv4.c
net/ipv4/datagram.c
net/ipv4/igmp.c
net/ipv4/inet_connection_sock.c
net/ipv4/inet_hashtables.c
net/ipv4/ip_output.c
net/ipv4/route.c
net/ipv4/tcp_cdg.c
net/ipv4/tcp_ipv4.c
net/ipv4/udp.c
net/ipv6/addrconf.c
net/ipv6/ip6_flowlabel.c
net/ipv6/mcast.c
net/ipv6/output_core.c
net/mac80211/rc80211_minstrel_ht.c
net/mac80211/scan.c
net/netfilter/ipvs/ip_vs_conn.c
net/netfilter/ipvs/ip_vs_twos.c
net/netfilter/nf_nat_core.c
net/netfilter/xt_statistic.c
net/openvswitch/actions.c
net/packet/af_packet.c
net/rds/bind.c
net/sched/act_gact.c
net/sched/act_sample.c
net/sched/sch_cake.c
net/sched/sch_netem.c
net/sched/sch_pie.c
net/sched/sch_sfb.c
net/sctp/socket.c
net/sunrpc/auth_gss/gss_krb5_wrap.c
net/sunrpc/cache.c
net/sunrpc/xprt.c
net/sunrpc/xprtsock.c
net/tipc/socket.c
net/unix/af_unix.c
net/xfrm/xfrm_state.c

index 43cdc4d..f69da50 100644 (file)
@@ -305,7 +305,7 @@ Possible BPF extensions are shown in the following table:
   vlan_tci                              skb_vlan_tag_get(skb)
   vlan_avail                            skb_vlan_tag_present(skb)
   vlan_tpid                             skb->vlan_proto
-  rand                                  prandom_u32()
+  rand                                  get_random_u32()
   ===================================   =================================================
 
 These extensions can also be prefixed with '#'.
index fc30df8..a2b31d9 100644 (file)
@@ -371,7 +371,7 @@ static unsigned long sigpage_addr(const struct mm_struct *mm,
 
        slots = ((last - first) >> PAGE_SHIFT) + 1;
 
-       offset = get_random_int() % slots;
+       offset = prandom_u32_max(slots);
 
        addr = first + (offset << PAGE_SHIFT);
 
index ea128e3..e07f359 100644 (file)
@@ -655,7 +655,7 @@ struct page *get_signal_page(void)
                 PAGE_SIZE / sizeof(u32));
 
        /* Give the signal return code some randomness */
-       offset = 0x200 + (get_random_int() & 0x7fc);
+       offset = 0x200 + (get_random_u16() & 0x7fc);
        signal_return_offset = offset;
 
        /* Copy signal return handlers into the page */
index 9015f49..044a7d7 100644 (file)
@@ -591,7 +591,7 @@ unsigned long __get_wchan(struct task_struct *p)
 unsigned long arch_align_stack(unsigned long sp)
 {
        if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-               sp -= get_random_int() & ~PAGE_MASK;
+               sp -= prandom_u32_max(PAGE_SIZE);
        return sp & ~0xf;
 }
 
index 733451f..d72e8f2 100644 (file)
@@ -67,7 +67,7 @@ static void invoke_syscall(struct pt_regs *regs, unsigned int scno,
         *
         * The resulting 5 bits of entropy is seen in SP[8:4].
         */
-       choose_random_kstack_offset(get_random_int() & 0x1FF);
+       choose_random_kstack_offset(get_random_u16() & 0x1FF);
 }
 
 static inline bool has_syscall_work(unsigned long flags)
index 660492f..1256e35 100644 (file)
@@ -293,7 +293,7 @@ unsigned long stack_top(void)
 unsigned long arch_align_stack(unsigned long sp)
 {
        if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-               sp -= get_random_int() & ~PAGE_MASK;
+               sp -= prandom_u32_max(PAGE_SIZE);
 
        return sp & STACK_ALIGN;
 }
index f32c38a..8c98260 100644 (file)
@@ -78,7 +78,7 @@ static unsigned long vdso_base(void)
        unsigned long base = STACK_TOP;
 
        if (current->flags & PF_RANDOMIZE) {
-               base += get_random_int() & (VDSO_RANDOMIZE_SIZE - 1);
+               base += prandom_u32_max(VDSO_RANDOMIZE_SIZE);
                base = PAGE_ALIGN(base);
        }
 
index 35b912b..bbe9ce4 100644 (file)
@@ -711,7 +711,7 @@ unsigned long mips_stack_top(void)
 unsigned long arch_align_stack(unsigned long sp)
 {
        if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-               sp -= get_random_int() & ~PAGE_MASK;
+               sp -= prandom_u32_max(PAGE_SIZE);
 
        return sp & ALMASK;
 }
index b2cc2c2..5fd9bf1 100644 (file)
@@ -79,7 +79,7 @@ static unsigned long vdso_base(void)
        }
 
        if (current->flags & PF_RANDOMIZE) {
-               base += get_random_int() & (VDSO_RANDOMIZE_SIZE - 1);
+               base += prandom_u32_max(VDSO_RANDOMIZE_SIZE);
                base = PAGE_ALIGN(base);
        }
 
index 3db0e97..c4f8374 100644 (file)
@@ -284,7 +284,7 @@ __get_wchan(struct task_struct *p)
 
 static inline unsigned long brk_rnd(void)
 {
-       return (get_random_int() & BRK_RND_MASK) << PAGE_SHIFT;
+       return (get_random_u32() & BRK_RND_MASK) << PAGE_SHIFT;
 }
 
 unsigned long arch_randomize_brk(struct mm_struct *mm)
index 2b34294..848b070 100644 (file)
@@ -239,14 +239,14 @@ static unsigned long mmap_rnd(void)
        unsigned long rnd = 0;
 
        if (current->flags & PF_RANDOMIZE)
-               rnd = get_random_int() & MMAP_RND_MASK;
+               rnd = get_random_u32() & MMAP_RND_MASK;
 
        return rnd << PAGE_SHIFT;
 }
 
 unsigned long arch_mmap_rnd(void)
 {
-       return (get_random_int() & MMAP_RND_MASK) << PAGE_SHIFT;
+       return (get_random_u32() & MMAP_RND_MASK) << PAGE_SHIFT;
 }
 
 static unsigned long mmap_legacy_base(void)
index 63dc44c..47e5960 100644 (file)
@@ -75,7 +75,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
 
        map_base = mm->mmap_base;
        if (current->flags & PF_RANDOMIZE)
-               map_base -= (get_random_int() & 0x1f) * PAGE_SIZE;
+               map_base -= prandom_u32_max(0x20) * PAGE_SIZE;
 
        vdso_text_start = get_unmapped_area(NULL, map_base, vdso_text_len, 0, 0);
 
index c1c1ef9..273c527 100644 (file)
@@ -82,7 +82,7 @@ static int __init crc_test_init(void)
 
                        if (len <= offset)
                                continue;
-                       prandom_bytes(data, len);
+                       get_random_bytes(data, len);
                        len -= offset;
 
                        crypto_shash_update(crct10dif_shash, data+offset, len);
index 40834ef..67da147 100644 (file)
@@ -2303,6 +2303,6 @@ void notrace __ppc64_runlatch_off(void)
 unsigned long arch_align_stack(unsigned long sp)
 {
        if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-               sp -= get_random_int() & ~PAGE_MASK;
+               sp -= prandom_u32_max(PAGE_SIZE);
        return sp & ~0xf;
 }
index d5119e0..42af4b3 100644 (file)
@@ -224,13 +224,13 @@ unsigned long __get_wchan(struct task_struct *p)
 unsigned long arch_align_stack(unsigned long sp)
 {
        if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-               sp -= get_random_int() & ~PAGE_MASK;
+               sp -= prandom_u32_max(PAGE_SIZE);
        return sp & ~0xf;
 }
 
 static inline unsigned long brk_rnd(void)
 {
-       return (get_random_int() & BRK_RND_MASK) << PAGE_SHIFT;
+       return (get_random_u16() & BRK_RND_MASK) << PAGE_SHIFT;
 }
 
 unsigned long arch_randomize_brk(struct mm_struct *mm)
index 535099f..3105ca5 100644 (file)
@@ -227,7 +227,7 @@ static unsigned long vdso_addr(unsigned long start, unsigned long len)
        end -= len;
 
        if (end > start) {
-               offset = get_random_int() % (((end - start) >> PAGE_SHIFT) + 1);
+               offset = prandom_u32_max(((end - start) >> PAGE_SHIFT) + 1);
                addr = start + (offset << PAGE_SHIFT);
        } else {
                addr = start;
index 5980ce3..3327c47 100644 (file)
@@ -37,7 +37,7 @@ static inline int mmap_is_legacy(struct rlimit *rlim_stack)
 
 unsigned long arch_mmap_rnd(void)
 {
-       return (get_random_int() & MMAP_RND_MASK) << PAGE_SHIFT;
+       return (get_random_u32() & MMAP_RND_MASK) << PAGE_SHIFT;
 }
 
 static unsigned long mmap_base_legacy(unsigned long rnd)
index cc19e09..ae9a86c 100644 (file)
@@ -354,7 +354,7 @@ static unsigned long vdso_addr(unsigned long start, unsigned int len)
        unsigned int offset;
 
        /* This loses some more bits than a modulo, but is cheaper */
-       offset = get_random_int() & (PTRS_PER_PTE - 1);
+       offset = prandom_u32_max(PTRS_PER_PTE);
        return start + (offset << PAGE_SHIFT);
 }
 
index 80b90b1..010bc42 100644 (file)
@@ -356,7 +356,7 @@ int singlestepping(void * t)
 unsigned long arch_align_stack(unsigned long sp)
 {
        if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-               sp -= get_random_int() % 8192;
+               sp -= prandom_u32_max(8192);
        return sp & ~0xf;
 }
 #endif
index 6292b96..311eae3 100644 (file)
@@ -327,7 +327,7 @@ static unsigned long vdso_addr(unsigned long start, unsigned len)
        end -= len;
 
        if (end > start) {
-               offset = get_random_int() % (((end - start) >> PAGE_SHIFT) + 1);
+               offset = prandom_u32_max(((end - start) >> PAGE_SHIFT) + 1);
                addr = start + (offset << PAGE_SHIFT);
        } else {
                addr = start;
index 48276c0..860b602 100644 (file)
@@ -503,7 +503,7 @@ static void bsp_init_amd(struct cpuinfo_x86 *c)
                va_align.flags    = ALIGN_VA_32 | ALIGN_VA_64;
 
                /* A random value per boot for bit slice [12:upper_bit) */
-               va_align.bits = get_random_int() & va_align.mask;
+               va_align.bits = get_random_u32() & va_align.mask;
        }
 
        if (cpu_has(c, X86_FEATURE_MWAITX))
index b1abf66..c032edc 100644 (file)
@@ -53,7 +53,7 @@ static unsigned long int get_module_load_offset(void)
                 */
                if (module_load_offset == 0)
                        module_load_offset =
-                               (get_random_int() % 1024 + 1) * PAGE_SIZE;
+                               (prandom_u32_max(1024) + 1) * PAGE_SIZE;
                mutex_unlock(&module_kaslr_mutex);
        }
        return module_load_offset;
index 58a6ea4..c21b734 100644 (file)
@@ -965,7 +965,7 @@ early_param("idle", idle_setup);
 unsigned long arch_align_stack(unsigned long sp)
 {
        if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-               sp -= get_random_int() % 8192;
+               sp -= prandom_u32_max(8192);
        return sp & ~0xf;
 }
 
index 0612a73..423b21e 100644 (file)
@@ -136,10 +136,10 @@ static int pageattr_test(void)
        failed += print_split(&sa);
 
        for (i = 0; i < NTEST; i++) {
-               unsigned long pfn = prandom_u32() % max_pfn_mapped;
+               unsigned long pfn = prandom_u32_max(max_pfn_mapped);
 
                addr[i] = (unsigned long)__va(pfn << PAGE_SHIFT);
-               len[i] = prandom_u32() % NPAGES;
+               len[i] = prandom_u32_max(NPAGES);
                len[i] = min_t(unsigned long, len[i], max_pfn_mapped - pfn - 1);
 
                if (len[i] == 0)
index 621abd1..ad9844c 100644 (file)
@@ -539,7 +539,7 @@ static int blk_crypto_fallback_init(void)
        if (blk_crypto_fallback_inited)
                return 0;
 
-       prandom_bytes(blank_key, BLK_CRYPTO_MAX_KEY_SIZE);
+       get_random_bytes(blank_key, BLK_CRYPTO_MAX_KEY_SIZE);
 
        err = bioset_init(&crypto_bio_split, 64, 0, 0);
        if (err)
index 9719c75..d3fbee1 100644 (file)
@@ -37,7 +37,7 @@ static void makedata(int disks)
        int i;
 
        for (i = 0; i < disks; i++) {
-               prandom_bytes(page_address(data[i]), PAGE_SIZE);
+               get_random_bytes(page_address(data[i]), PAGE_SIZE);
                dataptrs[i] = data[i];
                dataoffs[i] = 0;
        }
index e4bb03b..bcd059c 100644 (file)
@@ -855,9 +855,9 @@ static int prepare_keybuf(const u8 *key, unsigned int ksize,
 /* Generate a random length in range [0, max_len], but prefer smaller values */
 static unsigned int generate_random_length(unsigned int max_len)
 {
-       unsigned int len = prandom_u32() % (max_len + 1);
+       unsigned int len = prandom_u32_max(max_len + 1);
 
-       switch (prandom_u32() % 4) {
+       switch (prandom_u32_max(4)) {
        case 0:
                return len % 64;
        case 1:
@@ -874,14 +874,14 @@ static void flip_random_bit(u8 *buf, size_t size)
 {
        size_t bitpos;
 
-       bitpos = prandom_u32() % (size * 8);
+       bitpos = prandom_u32_max(size * 8);
        buf[bitpos / 8] ^= 1 << (bitpos % 8);
 }
 
 /* Flip a random byte in the given nonempty data buffer */
 static void flip_random_byte(u8 *buf, size_t size)
 {
-       buf[prandom_u32() % size] ^= 0xff;
+       buf[prandom_u32_max(size)] ^= 0xff;
 }
 
 /* Sometimes make some random changes to the given nonempty data buffer */
@@ -891,15 +891,15 @@ static void mutate_buffer(u8 *buf, size_t size)
        size_t i;
 
        /* Sometimes flip some bits */
-       if (prandom_u32() % 4 == 0) {
-               num_flips = min_t(size_t, 1 << (prandom_u32() % 8), size * 8);
+       if (prandom_u32_max(4) == 0) {
+               num_flips = min_t(size_t, 1 << prandom_u32_max(8), size * 8);
                for (i = 0; i < num_flips; i++)
                        flip_random_bit(buf, size);
        }
 
        /* Sometimes flip some bytes */
-       if (prandom_u32() % 4 == 0) {
-               num_flips = min_t(size_t, 1 << (prandom_u32() % 8), size);
+       if (prandom_u32_max(4) == 0) {
+               num_flips = min_t(size_t, 1 << prandom_u32_max(8), size);
                for (i = 0; i < num_flips; i++)
                        flip_random_byte(buf, size);
        }
@@ -915,11 +915,11 @@ static void generate_random_bytes(u8 *buf, size_t count)
        if (count == 0)
                return;
 
-       switch (prandom_u32() % 8) { /* Choose a generation strategy */
+       switch (prandom_u32_max(8)) { /* Choose a generation strategy */
        case 0:
        case 1:
                /* All the same byte, plus optional mutations */
-               switch (prandom_u32() % 4) {
+               switch (prandom_u32_max(4)) {
                case 0:
                        b = 0x00;
                        break;
@@ -927,7 +927,7 @@ static void generate_random_bytes(u8 *buf, size_t count)
                        b = 0xff;
                        break;
                default:
-                       b = (u8)prandom_u32();
+                       b = get_random_u8();
                        break;
                }
                memset(buf, b, count);
@@ -935,8 +935,8 @@ static void generate_random_bytes(u8 *buf, size_t count)
                break;
        case 2:
                /* Ascending or descending bytes, plus optional mutations */
-               increment = (u8)prandom_u32();
-               b = (u8)prandom_u32();
+               increment = get_random_u8();
+               b = get_random_u8();
                for (i = 0; i < count; i++, b += increment)
                        buf[i] = b;
                mutate_buffer(buf, count);
@@ -944,7 +944,7 @@ static void generate_random_bytes(u8 *buf, size_t count)
        default:
                /* Fully random bytes */
                for (i = 0; i < count; i++)
-                       buf[i] = (u8)prandom_u32();
+                       buf[i] = get_random_u8();
        }
 }
 
@@ -959,24 +959,24 @@ static char *generate_random_sgl_divisions(struct test_sg_division *divs,
                unsigned int this_len;
                const char *flushtype_str;
 
-               if (div == &divs[max_divs - 1] || prandom_u32() % 2 == 0)
+               if (div == &divs[max_divs - 1] || prandom_u32_max(2) == 0)
                        this_len = remaining;
                else
-                       this_len = 1 + (prandom_u32() % remaining);
+                       this_len = 1 + prandom_u32_max(remaining);
                div->proportion_of_total = this_len;
 
-               if (prandom_u32() % 4 == 0)
-                       div->offset = (PAGE_SIZE - 128) + (prandom_u32() % 128);
-               else if (prandom_u32() % 2 == 0)
-                       div->offset = prandom_u32() % 32;
+               if (prandom_u32_max(4) == 0)
+                       div->offset = (PAGE_SIZE - 128) + prandom_u32_max(128);
+               else if (prandom_u32_max(2) == 0)
+                       div->offset = prandom_u32_max(32);
                else
-                       div->offset = prandom_u32() % PAGE_SIZE;
-               if (prandom_u32() % 8 == 0)
+                       div->offset = prandom_u32_max(PAGE_SIZE);
+               if (prandom_u32_max(8) == 0)
                        div->offset_relative_to_alignmask = true;
 
                div->flush_type = FLUSH_TYPE_NONE;
                if (gen_flushes) {
-                       switch (prandom_u32() % 4) {
+                       switch (prandom_u32_max(4)) {
                        case 0:
                                div->flush_type = FLUSH_TYPE_REIMPORT;
                                break;
@@ -988,7 +988,7 @@ static char *generate_random_sgl_divisions(struct test_sg_division *divs,
 
                if (div->flush_type != FLUSH_TYPE_NONE &&
                    !(req_flags & CRYPTO_TFM_REQ_MAY_SLEEP) &&
-                   prandom_u32() % 2 == 0)
+                   prandom_u32_max(2) == 0)
                        div->nosimd = true;
 
                switch (div->flush_type) {
@@ -1035,7 +1035,7 @@ static void generate_random_testvec_config(struct testvec_config *cfg,
 
        p += scnprintf(p, end - p, "random:");
 
-       switch (prandom_u32() % 4) {
+       switch (prandom_u32_max(4)) {
        case 0:
        case 1:
                cfg->inplace_mode = OUT_OF_PLACE;
@@ -1050,12 +1050,12 @@ static void generate_random_testvec_config(struct testvec_config *cfg,
                break;
        }
 
-       if (prandom_u32() % 2 == 0) {
+       if (prandom_u32_max(2) == 0) {
                cfg->req_flags |= CRYPTO_TFM_REQ_MAY_SLEEP;
                p += scnprintf(p, end - p, " may_sleep");
        }
 
-       switch (prandom_u32() % 4) {
+       switch (prandom_u32_max(4)) {
        case 0:
                cfg->finalization_type = FINALIZATION_TYPE_FINAL;
                p += scnprintf(p, end - p, " use_final");
@@ -1071,7 +1071,7 @@ static void generate_random_testvec_config(struct testvec_config *cfg,
        }
 
        if (!(cfg->req_flags & CRYPTO_TFM_REQ_MAY_SLEEP) &&
-           prandom_u32() % 2 == 0) {
+           prandom_u32_max(2) == 0) {
                cfg->nosimd = true;
                p += scnprintf(p, end - p, " nosimd");
        }
@@ -1084,7 +1084,7 @@ static void generate_random_testvec_config(struct testvec_config *cfg,
                                          cfg->req_flags);
        p += scnprintf(p, end - p, "]");
 
-       if (cfg->inplace_mode == OUT_OF_PLACE && prandom_u32() % 2 == 0) {
+       if (cfg->inplace_mode == OUT_OF_PLACE && prandom_u32_max(2) == 0) {
                p += scnprintf(p, end - p, " dst_divs=[");
                p = generate_random_sgl_divisions(cfg->dst_divs,
                                                  ARRAY_SIZE(cfg->dst_divs),
@@ -1093,13 +1093,13 @@ static void generate_random_testvec_config(struct testvec_config *cfg,
                p += scnprintf(p, end - p, "]");
        }
 
-       if (prandom_u32() % 2 == 0) {
-               cfg->iv_offset = 1 + (prandom_u32() % MAX_ALGAPI_ALIGNMASK);
+       if (prandom_u32_max(2) == 0) {
+               cfg->iv_offset = 1 + prandom_u32_max(MAX_ALGAPI_ALIGNMASK);
                p += scnprintf(p, end - p, " iv_offset=%u", cfg->iv_offset);
        }
 
-       if (prandom_u32() % 2 == 0) {
-               cfg->key_offset = 1 + (prandom_u32() % MAX_ALGAPI_ALIGNMASK);
+       if (prandom_u32_max(2) == 0) {
+               cfg->key_offset = 1 + prandom_u32_max(MAX_ALGAPI_ALIGNMASK);
                p += scnprintf(p, end - p, " key_offset=%u", cfg->key_offset);
        }
 
@@ -1652,8 +1652,8 @@ static void generate_random_hash_testvec(struct shash_desc *desc,
        vec->ksize = 0;
        if (maxkeysize) {
                vec->ksize = maxkeysize;
-               if (prandom_u32() % 4 == 0)
-                       vec->ksize = 1 + (prandom_u32() % maxkeysize);
+               if (prandom_u32_max(4) == 0)
+                       vec->ksize = 1 + prandom_u32_max(maxkeysize);
                generate_random_bytes((u8 *)vec->key, vec->ksize);
 
                vec->setkey_error = crypto_shash_setkey(desc->tfm, vec->key,
@@ -2218,13 +2218,13 @@ static void mutate_aead_message(struct aead_testvec *vec, bool aad_iv,
        const unsigned int aad_tail_size = aad_iv ? ivsize : 0;
        const unsigned int authsize = vec->clen - vec->plen;
 
-       if (prandom_u32() % 2 == 0 && vec->alen > aad_tail_size) {
+       if (prandom_u32_max(2) == 0 && vec->alen > aad_tail_size) {
                 /* Mutate the AAD */
                flip_random_bit((u8 *)vec->assoc, vec->alen - aad_tail_size);
-               if (prandom_u32() % 2 == 0)
+               if (prandom_u32_max(2) == 0)
                        return;
        }
-       if (prandom_u32() % 2 == 0) {
+       if (prandom_u32_max(2) == 0) {
                /* Mutate auth tag (assuming it's at the end of ciphertext) */
                flip_random_bit((u8 *)vec->ctext + vec->plen, authsize);
        } else {
@@ -2249,7 +2249,7 @@ static void generate_aead_message(struct aead_request *req,
        const unsigned int ivsize = crypto_aead_ivsize(tfm);
        const unsigned int authsize = vec->clen - vec->plen;
        const bool inauthentic = (authsize >= MIN_COLLISION_FREE_AUTHSIZE) &&
-                                (prefer_inauthentic || prandom_u32() % 4 == 0);
+                                (prefer_inauthentic || prandom_u32_max(4) == 0);
 
        /* Generate the AAD. */
        generate_random_bytes((u8 *)vec->assoc, vec->alen);
@@ -2257,7 +2257,7 @@ static void generate_aead_message(struct aead_request *req,
                /* Avoid implementation-defined behavior. */
                memcpy((u8 *)vec->assoc + vec->alen - ivsize, vec->iv, ivsize);
 
-       if (inauthentic && prandom_u32() % 2 == 0) {
+       if (inauthentic && prandom_u32_max(2) == 0) {
                /* Generate a random ciphertext. */
                generate_random_bytes((u8 *)vec->ctext, vec->clen);
        } else {
@@ -2321,8 +2321,8 @@ static void generate_random_aead_testvec(struct aead_request *req,
 
        /* Key: length in [0, maxkeysize], but usually choose maxkeysize */
        vec->klen = maxkeysize;
-       if (prandom_u32() % 4 == 0)
-               vec->klen = prandom_u32() % (maxkeysize + 1);
+       if (prandom_u32_max(4) == 0)
+               vec->klen = prandom_u32_max(maxkeysize + 1);
        generate_random_bytes((u8 *)vec->key, vec->klen);
        vec->setkey_error = crypto_aead_setkey(tfm, vec->key, vec->klen);
 
@@ -2331,8 +2331,8 @@ static void generate_random_aead_testvec(struct aead_request *req,
 
        /* Tag length: in [0, maxauthsize], but usually choose maxauthsize */
        authsize = maxauthsize;
-       if (prandom_u32() % 4 == 0)
-               authsize = prandom_u32() % (maxauthsize + 1);
+       if (prandom_u32_max(4) == 0)
+               authsize = prandom_u32_max(maxauthsize + 1);
        if (prefer_inauthentic && authsize < MIN_COLLISION_FREE_AUTHSIZE)
                authsize = MIN_COLLISION_FREE_AUTHSIZE;
        if (WARN_ON(authsize > maxdatasize))
@@ -2342,7 +2342,7 @@ static void generate_random_aead_testvec(struct aead_request *req,
 
        /* AAD, plaintext, and ciphertext lengths */
        total_len = generate_random_length(maxdatasize);
-       if (prandom_u32() % 4 == 0)
+       if (prandom_u32_max(4) == 0)
                vec->alen = 0;
        else
                vec->alen = generate_random_length(total_len);
@@ -2958,8 +2958,8 @@ static void generate_random_cipher_testvec(struct skcipher_request *req,
 
        /* Key: length in [0, maxkeysize], but usually choose maxkeysize */
        vec->klen = maxkeysize;
-       if (prandom_u32() % 4 == 0)
-               vec->klen = prandom_u32() % (maxkeysize + 1);
+       if (prandom_u32_max(4) == 0)
+               vec->klen = prandom_u32_max(maxkeysize + 1);
        generate_random_bytes((u8 *)vec->key, vec->klen);
        vec->setkey_error = crypto_skcipher_setkey(tfm, vec->key, vec->klen);
 
index c897c45..ee69d50 100644 (file)
@@ -781,7 +781,7 @@ static struct socket *drbd_wait_for_connect(struct drbd_connection *connection,
 
        timeo = connect_int * HZ;
        /* 28.5% random jitter */
-       timeo += (prandom_u32() & 1) ? timeo / 7 : -timeo / 7;
+       timeo += prandom_u32_max(2) ? timeo / 7 : -timeo / 7;
 
        err = wait_for_completion_interruptible_timeout(&ad->door_bell, timeo);
        if (err <= 0)
@@ -1004,7 +1004,7 @@ retry:
                                drbd_warn(connection, "Error receiving initial packet\n");
                                sock_release(s);
 randomize:
-                               if (prandom_u32() & 1)
+                               if (prandom_u32_max(2))
                                        goto retry;
                        }
                }
index 01acf23..2fe28ee 100644 (file)
@@ -97,7 +97,7 @@ MODULE_PARM_DESC(ratelimit_disable, "Disable random ratelimit suppression");
  * Returns whether or not the input pool has been seeded and thus guaranteed
  * to supply cryptographically secure random numbers. This applies to: the
  * /dev/urandom device, the get_random_bytes function, and the get_random_{u8,
- * u16,u32,u64,int,long} family of functions.
+ * u16,u32,u64,long} family of functions.
  *
  * Returns: true if the input pool has been seeded.
  *          false if the input pool has not been seeded.
@@ -161,15 +161,14 @@ EXPORT_SYMBOL(wait_for_random_bytes);
  *     u16 get_random_u16()
  *     u32 get_random_u32()
  *     u64 get_random_u64()
- *     unsigned int get_random_int()
  *     unsigned long get_random_long()
  *
  * These interfaces will return the requested number of random bytes
  * into the given buffer or as a return value. This is equivalent to
- * a read from /dev/urandom. The u8, u16, u32, u64, int, and long
- * family of functions may be higher performance for one-off random
- * integers, because they do a bit of buffering and do not invoke
- * reseeding until the buffer is emptied.
+ * a read from /dev/urandom. The u8, u16, u32, u64, long family of
+ * functions may be higher performance for one-off random integers,
+ * because they do a bit of buffering and do not invoke reseeding
+ * until the buffer is emptied.
  *
  *********************************************************************/
 
index 9fe2ae7..ffe6216 100644 (file)
@@ -312,7 +312,7 @@ static unsigned long dmatest_random(void)
 {
        unsigned long buf;
 
-       prandom_bytes(&buf, sizeof(buf));
+       get_random_bytes(&buf, sizeof(buf));
        return buf;
 }
 
index cd75b0c..845023c 100644 (file)
@@ -2424,7 +2424,7 @@ gen8_dispatch_bsd_engine(struct drm_i915_private *dev_priv,
        /* Check whether the file_priv has already selected one ring. */
        if ((int)file_priv->bsd_engine < 0)
                file_priv->bsd_engine =
-                       get_random_int() % num_vcs_engines(dev_priv);
+                       prandom_u32_max(num_vcs_engines(dev_priv));
 
        return file_priv->bsd_engine;
 }
index 329ff75..7bd1861 100644 (file)
@@ -137,12 +137,12 @@ static u64 random_offset(u64 start, u64 end, u64 len, u64 align)
        range = round_down(end - len, align) - round_up(start, align);
        if (range) {
                if (sizeof(unsigned long) == sizeof(u64)) {
-                       addr = get_random_long();
+                       addr = get_random_u64();
                } else {
-                       addr = get_random_int();
+                       addr = get_random_u32();
                        if (range > U32_MAX) {
                                addr <<= 32;
-                               addr |= get_random_int();
+                               addr |= get_random_u32();
                        }
                }
                div64_u64_rem(addr, range, &addr);
index c4e9323..39da0fb 100644 (file)
@@ -135,7 +135,7 @@ static int __run_selftests(const char *name,
        int err = 0;
 
        while (!i915_selftest.random_seed)
-               i915_selftest.random_seed = get_random_int();
+               i915_selftest.random_seed = get_random_u32();
 
        i915_selftest.timeout_jiffies =
                i915_selftest.timeout_ms ?
index 7a2b2d6..62f6958 100644 (file)
@@ -729,7 +729,7 @@ static void drm_test_buddy_alloc_limit(struct kunit *test)
 static int drm_buddy_init_test(struct kunit *test)
 {
        while (!random_seed)
-               random_seed = get_random_int();
+               random_seed = get_random_u32();
 
        return 0;
 }
index 659d1af..c4b66ee 100644 (file)
@@ -2212,7 +2212,7 @@ err_nodes:
 static int drm_mm_init_test(struct kunit *test)
 {
        while (!random_seed)
-               random_seed = get_random_int();
+               random_seed = get_random_u32();
 
        return 0;
 }
index 70da57e..cc2222b 100644 (file)
@@ -3807,7 +3807,7 @@ static int cma_alloc_any_port(enum rdma_ucm_port_space ps,
 
        inet_get_local_port_range(net, &low, &high);
        remaining = (high - low) + 1;
-       rover = prandom_u32() % remaining + low;
+       rover = prandom_u32_max(remaining) + low;
 retry:
        if (last_used_port != rover) {
                struct rdma_bind_list *bind_list;
index 14392c9..499a425 100644 (file)
@@ -734,7 +734,7 @@ static int send_connect(struct c4iw_ep *ep)
                                   &ep->com.remote_addr;
        int ret;
        enum chip_type adapter_type = ep->com.dev->rdev.lldi.adapter_type;
-       u32 isn = (prandom_u32() & ~7UL) - 1;
+       u32 isn = (get_random_u32() & ~7UL) - 1;
        struct net_device *netdev;
        u64 params;
 
@@ -2469,7 +2469,7 @@ static int accept_cr(struct c4iw_ep *ep, struct sk_buff *skb,
        }
 
        if (!is_t4(adapter_type)) {
-               u32 isn = (prandom_u32() & ~7UL) - 1;
+               u32 isn = (get_random_u32() & ~7UL) - 1;
 
                skb = get_skb(skb, roundup(sizeof(*rpl5), 16), GFP_KERNEL);
                rpl5 = __skb_put_zero(skb, roundup(sizeof(*rpl5), 16));
index f64e7e0..280d614 100644 (file)
@@ -54,7 +54,7 @@ u32 c4iw_id_alloc(struct c4iw_id_table *alloc)
 
        if (obj < alloc->max) {
                if (alloc->flags & C4IW_ID_TABLE_F_RANDOM)
-                       alloc->last += prandom_u32() % RANDOM_SKIP;
+                       alloc->last += prandom_u32_max(RANDOM_SKIP);
                else
                        alloc->last = obj + 1;
                if (alloc->last >= alloc->max)
@@ -85,7 +85,7 @@ int c4iw_id_table_alloc(struct c4iw_id_table *alloc, u32 start, u32 num,
        alloc->start = start;
        alloc->flags = flags;
        if (flags & C4IW_ID_TABLE_F_RANDOM)
-               alloc->last = prandom_u32() % RANDOM_SKIP;
+               alloc->last = prandom_u32_max(RANDOM_SKIP);
        else
                alloc->last = 0;
        alloc->max = num;
index 2a7abf7..18b05ff 100644 (file)
@@ -850,7 +850,7 @@ void hfi1_kern_init_ctxt_generations(struct hfi1_ctxtdata *rcd)
        int i;
 
        for (i = 0; i < RXE_NUM_TID_FLOWS; i++) {
-               rcd->flows[i].generation = mask_generation(prandom_u32());
+               rcd->flows[i].generation = mask_generation(get_random_u32());
                kern_set_hw_flow(rcd, KERN_GENERATION_RESERVED, i);
        }
 }
index 492b122..480c062 100644 (file)
@@ -41,9 +41,8 @@ static inline u16 get_ah_udp_sport(const struct rdma_ah_attr *ah_attr)
        u16 sport;
 
        if (!fl)
-               sport = get_random_u32() %
-                       (IB_ROCE_UDP_ENCAP_VALID_PORT_MAX + 1 -
-                        IB_ROCE_UDP_ENCAP_VALID_PORT_MIN) +
+               sport = prandom_u32_max(IB_ROCE_UDP_ENCAP_VALID_PORT_MAX + 1 -
+                                       IB_ROCE_UDP_ENCAP_VALID_PORT_MIN) +
                        IB_ROCE_UDP_ENCAP_VALID_PORT_MIN;
        else
                sport = rdma_flow_label_to_udp_sport(fl);
index d13ecbd..a37cfac 100644 (file)
@@ -96,7 +96,7 @@ static void __propagate_pkey_ev(struct mlx4_ib_dev *dev, int port_num,
 __be64 mlx4_ib_gen_node_guid(void)
 {
 #define NODE_GUID_HI   ((u64) (((u64)IB_OPENIB_OUI) << 40))
-       return cpu_to_be64(NODE_GUID_HI | prandom_u32());
+       return cpu_to_be64(NODE_GUID_HI | get_random_u32());
 }
 
 __be64 mlx4_ib_get_new_demux_tid(struct mlx4_ib_demux_ctx *ctx)
index ebb35b8..b610d36 100644 (file)
@@ -465,7 +465,7 @@ static int ipoib_cm_req_handler(struct ib_cm_id *cm_id,
                goto err_qp;
        }
 
-       psn = prandom_u32() & 0xffffff;
+       psn = get_random_u32() & 0xffffff;
        ret = ipoib_cm_modify_rx_qp(dev, cm_id, p->qp, psn);
        if (ret)
                goto err_modify;
index 758e1d7..8546b88 100644 (file)
@@ -1517,8 +1517,7 @@ static void rtrs_clt_err_recovery_work(struct work_struct *work)
        rtrs_clt_stop_and_destroy_conns(clt_path);
        queue_delayed_work(rtrs_wq, &clt_path->reconnect_dwork,
                           msecs_to_jiffies(delay_ms +
-                                           prandom_u32() %
-                                           RTRS_RECONNECT_SEED));
+                                           prandom_u32_max(RTRS_RECONNECT_SEED)));
 }
 
 static struct rtrs_clt_path *alloc_path(struct rtrs_clt_sess *clt,
index f2c5a7e..3427555 100644 (file)
@@ -401,7 +401,7 @@ static bool check_should_bypass(struct cached_dev *dc, struct bio *bio)
        }
 
        if (bypass_torture_test(dc)) {
-               if ((get_random_int() & 3) == 3)
+               if (prandom_u32_max(4) == 3)
                        goto skip;
                else
                        goto rescale;
index 79c7333..832d856 100644 (file)
@@ -2994,7 +2994,7 @@ static int r5l_load_log(struct r5l_log *log)
        }
 create:
        if (create_super) {
-               log->last_cp_seq = prandom_u32();
+               log->last_cp_seq = get_random_u32();
                cp = 0;
                r5l_log_write_empty_meta_block(log, cp, log->last_cp_seq);
                /*
index 9b7bcdc..303d02b 100644 (file)
@@ -870,7 +870,7 @@ static void precalculate_color(struct tpg_data *tpg, int k)
                g = tpg_colors[col].g;
                b = tpg_colors[col].b;
        } else if (tpg->pattern == TPG_PAT_NOISE) {
-               r = g = b = prandom_u32_max(256);
+               r = g = b = get_random_u8();
        } else if (k == TPG_COLOR_RANDOM) {
                r = g = b = tpg->qual_offset + prandom_u32_max(196);
        } else if (k >= TPG_COLOR_RAMP) {
index 232cab5..8bd0958 100644 (file)
@@ -104,8 +104,8 @@ retry:
                                break;
                        case 2:
                                rds.block |= V4L2_RDS_BLOCK_ERROR;
-                               rds.lsb = prandom_u32_max(256);
-                               rds.msb = prandom_u32_max(256);
+                               rds.lsb = get_random_u8();
+                               rds.msb = get_random_u8();
                                break;
                        case 3: /* Skip block altogether */
                                if (i)
index 64e3e4c..6cc32eb 100644 (file)
@@ -210,7 +210,7 @@ static void vivid_fill_buff_noise(__s16 *tch_buf, int size)
 
        /* Fill 10% of the values within range -3 and 3, zero the others */
        for (i = 0; i < size; i++) {
-               unsigned int rand = get_random_int();
+               unsigned int rand = get_random_u32();
 
                if (rand % 10)
                        tch_buf[i] = 0;
@@ -221,7 +221,7 @@ static void vivid_fill_buff_noise(__s16 *tch_buf, int size)
 
 static inline int get_random_pressure(void)
 {
-       return get_random_int() % VIVID_PRESSURE_LIMIT;
+       return prandom_u32_max(VIVID_PRESSURE_LIMIT);
 }
 
 static void vivid_tch_buf_set(struct v4l2_pix_format *f,
@@ -272,7 +272,7 @@ void vivid_fillbuff_tch(struct vivid_dev *dev, struct vivid_buffer *buf)
                return;
 
        if (test_pat_idx == 0)
-               dev->tch_pat_random = get_random_int();
+               dev->tch_pat_random = get_random_u32();
        rand = dev->tch_pat_random;
 
        switch (test_pattern) {
index 75c4bef..65e6cae 100644 (file)
@@ -2948,7 +2948,7 @@ static void gaudi2_user_interrupt_setup(struct hl_device *hdev)
 
 static inline int gaudi2_get_non_zero_random_int(void)
 {
-       int rand = get_random_int();
+       int rand = get_random_u32();
 
        return rand ? rand : 1;
 }
index ef53a25..95fa8fb 100644 (file)
@@ -97,8 +97,8 @@ static void mmc_should_fail_request(struct mmc_host *host,
            !should_fail(&host->fail_mmc_request, data->blksz * data->blocks))
                return;
 
-       data->error = data_errors[prandom_u32() % ARRAY_SIZE(data_errors)];
-       data->bytes_xfered = (prandom_u32() % (data->bytes_xfered >> 9)) << 9;
+       data->error = data_errors[prandom_u32_max(ARRAY_SIZE(data_errors))];
+       data->bytes_xfered = prandom_u32_max(data->bytes_xfered >> 9) << 9;
 }
 
 #else /* CONFIG_FAIL_MMC_REQUEST */
index 5816141..c78bbc2 100644 (file)
@@ -1858,7 +1858,7 @@ static void dw_mci_start_fault_timer(struct dw_mci *host)
         * Try to inject the error at random points during the data transfer.
         */
        hrtimer_start(&host->fault_timer,
-                     ms_to_ktime(prandom_u32() % 25),
+                     ms_to_ktime(prandom_u32_max(25)),
                      HRTIMER_MODE_REL);
 }
 
index 24beade..6727190 100644 (file)
@@ -1393,7 +1393,7 @@ static int ns_do_read_error(struct nandsim *ns, int num)
        unsigned int page_no = ns->regs.row;
 
        if (ns_read_error(page_no)) {
-               prandom_bytes(ns->buf.byte, num);
+               get_random_bytes(ns->buf.byte, num);
                NS_WARN("simulating read error in page %u\n", page_no);
                return 1;
        }
@@ -1402,12 +1402,12 @@ static int ns_do_read_error(struct nandsim *ns, int num)
 
 static void ns_do_bit_flips(struct nandsim *ns, int num)
 {
-       if (bitflips && prandom_u32() < (1 << 22)) {
+       if (bitflips && get_random_u16() < (1 << 6)) {
                int flips = 1;
                if (bitflips > 1)
-                       flips = (prandom_u32() % (int) bitflips) + 1;
+                       flips = prandom_u32_max(bitflips) + 1;
                while (flips--) {
-                       int pos = prandom_u32() % (num * 8);
+                       int pos = prandom_u32_max(num * 8);
                        ns->buf.byte[pos / 8] ^= (1 << (pos % 8));
                        NS_WARN("read_page: flipping bit %d in page %d "
                                "reading from %d ecc: corrected=%u failed=%u\n",
index c4f2713..4409885 100644 (file)
@@ -47,7 +47,7 @@ struct nand_ecc_test {
 static void single_bit_error_data(void *error_data, void *correct_data,
                                size_t size)
 {
-       unsigned int offset = prandom_u32() % (size * BITS_PER_BYTE);
+       unsigned int offset = prandom_u32_max(size * BITS_PER_BYTE);
 
        memcpy(error_data, correct_data, size);
        __change_bit_le(offset, error_data);
@@ -58,9 +58,9 @@ static void double_bit_error_data(void *error_data, void *correct_data,
 {
        unsigned int offset[2];
 
-       offset[0] = prandom_u32() % (size * BITS_PER_BYTE);
+       offset[0] = prandom_u32_max(size * BITS_PER_BYTE);
        do {
-               offset[1] = prandom_u32() % (size * BITS_PER_BYTE);
+               offset[1] = prandom_u32_max(size * BITS_PER_BYTE);
        } while (offset[0] == offset[1]);
 
        memcpy(error_data, correct_data, size);
@@ -71,7 +71,7 @@ static void double_bit_error_data(void *error_data, void *correct_data,
 
 static unsigned int random_ecc_bit(size_t size)
 {
-       unsigned int offset = prandom_u32() % (3 * BITS_PER_BYTE);
+       unsigned int offset = prandom_u32_max(3 * BITS_PER_BYTE);
 
        if (size == 256) {
                /*
@@ -79,7 +79,7 @@ static unsigned int random_ecc_bit(size_t size)
                 * and 17th bit) in ECC code for 256 byte data block
                 */
                while (offset == 16 || offset == 17)
-                       offset = prandom_u32() % (3 * BITS_PER_BYTE);
+                       offset = prandom_u32_max(3 * BITS_PER_BYTE);
        }
 
        return offset;
@@ -266,7 +266,7 @@ static int nand_ecc_test_run(const size_t size)
                goto error;
        }
 
-       prandom_bytes(correct_data, size);
+       get_random_bytes(correct_data, size);
        ecc_sw_hamming_calculate(correct_data, size, correct_ecc, sm_order);
        for (i = 0; i < ARRAY_SIZE(nand_ecc_test); i++) {
                nand_ecc_test[i].prepare(error_data, error_ecc,
index c9ec708..075bce3 100644 (file)
@@ -223,7 +223,7 @@ static int __init mtd_speedtest_init(void)
        if (!iobuf)
                goto out;
 
-       prandom_bytes(iobuf, mtd->erasesize);
+       get_random_bytes(iobuf, mtd->erasesize);
 
        bbt = kzalloc(ebcnt, GFP_KERNEL);
        if (!bbt)
index cb29c8c..75b6ddc 100644 (file)
@@ -45,9 +45,8 @@ static int rand_eb(void)
        unsigned int eb;
 
 again:
-       eb = prandom_u32();
        /* Read or write up 2 eraseblocks at a time - hence 'ebcnt - 1' */
-       eb %= (ebcnt - 1);
+       eb = prandom_u32_max(ebcnt - 1);
        if (bbt[eb])
                goto again;
        return eb;
@@ -55,20 +54,12 @@ again:
 
 static int rand_offs(void)
 {
-       unsigned int offs;
-
-       offs = prandom_u32();
-       offs %= bufsize;
-       return offs;
+       return prandom_u32_max(bufsize);
 }
 
 static int rand_len(int offs)
 {
-       unsigned int len;
-
-       len = prandom_u32();
-       len %= (bufsize - offs);
-       return len;
+       return prandom_u32_max(bufsize - offs);
 }
 
 static int do_read(void)
@@ -127,7 +118,7 @@ static int do_write(void)
 
 static int do_operation(void)
 {
-       if (prandom_u32() & 1)
+       if (prandom_u32_max(2))
                return do_read();
        else
                return do_write();
@@ -192,7 +183,7 @@ static int __init mtd_stresstest_init(void)
                goto out;
        for (i = 0; i < ebcnt; i++)
                offsets[i] = mtd->erasesize;
-       prandom_bytes(writebuf, bufsize);
+       get_random_bytes(writebuf, bufsize);
 
        bbt = kzalloc(ebcnt, GFP_KERNEL);
        if (!bbt)
index 31d427e..908d0e0 100644 (file)
@@ -590,7 +590,7 @@ int ubi_dbg_power_cut(struct ubi_device *ubi, int caller)
 
                if (ubi->dbg.power_cut_max > ubi->dbg.power_cut_min) {
                        range = ubi->dbg.power_cut_max - ubi->dbg.power_cut_min;
-                       ubi->dbg.power_cut_counter += prandom_u32() % range;
+                       ubi->dbg.power_cut_counter += prandom_u32_max(range);
                }
                return 0;
        }
index 118248a..dc8d8f8 100644 (file)
@@ -73,7 +73,7 @@ static inline int ubi_dbg_is_bgt_disabled(const struct ubi_device *ubi)
 static inline int ubi_dbg_is_bitflip(const struct ubi_device *ubi)
 {
        if (ubi->dbg.emulate_bitflips)
-               return !(prandom_u32() % 200);
+               return !prandom_u32_max(200);
        return 0;
 }
 
@@ -87,7 +87,7 @@ static inline int ubi_dbg_is_bitflip(const struct ubi_device *ubi)
 static inline int ubi_dbg_is_write_failure(const struct ubi_device *ubi)
 {
        if (ubi->dbg.emulate_io_failures)
-               return !(prandom_u32() % 500);
+               return !prandom_u32_max(500);
        return 0;
 }
 
@@ -101,7 +101,7 @@ static inline int ubi_dbg_is_write_failure(const struct ubi_device *ubi)
 static inline int ubi_dbg_is_erase_failure(const struct ubi_device *ubi)
 {
        if (ubi->dbg.emulate_io_failures)
-               return !(prandom_u32() % 400);
+               return !prandom_u32_max(400);
        return 0;
 }
 
index 24bb50d..e84c49b 100644 (file)
@@ -4806,7 +4806,7 @@ static u32 bond_rr_gen_slave_id(struct bonding *bond)
 
        switch (packets_per_slave) {
        case 0:
-               slave_id = prandom_u32();
+               slave_id = get_random_u32();
                break;
        case 1:
                slave_id = this_cpu_inc_return(*bond->rr_tx_counter);
index eed98c1..04cf768 100644 (file)
@@ -3874,7 +3874,7 @@ static void bnxt_init_vnics(struct bnxt *bp)
 
                if (bp->vnic_info[i].rss_hash_key) {
                        if (i == 0)
-                               prandom_bytes(vnic->rss_hash_key,
+                               get_random_bytes(vnic->rss_hash_key,
                                              HW_HASH_KEY_SIZE);
                        else
                                memcpy(vnic->rss_hash_key,
index e86503d..2198e35 100644 (file)
@@ -4105,8 +4105,7 @@ static int cnic_cm_alloc_mem(struct cnic_dev *dev)
        for (i = 0; i < MAX_CM_SK_TBL_SZ; i++)
                atomic_set(&cp->csk_tbl[i].ref_count, 0);
 
-       port_id = prandom_u32();
-       port_id %= CNIC_LOCAL_PORT_RANGE;
+       port_id = prandom_u32_max(CNIC_LOCAL_PORT_RANGE);
        if (cnic_init_id_tbl(&cp->csk_port_tbl, CNIC_LOCAL_PORT_RANGE,
                             CNIC_LOCAL_PORT_MIN, port_id)) {
                cnic_cm_free_mem(dev);
@@ -4165,7 +4164,7 @@ static int cnic_cm_init_bnx2_hw(struct cnic_dev *dev)
 {
        u32 seed;
 
-       seed = prandom_u32();
+       seed = get_random_u32();
        cnic_ctx_wr(dev, 45, 0, seed);
        return 0;
 }
index f90bfba..c2e7037 100644 (file)
@@ -1063,7 +1063,7 @@ static void chtls_pass_accept_rpl(struct sk_buff *skb,
        opt2 |= WND_SCALE_EN_V(WSCALE_OK(tp));
        rpl5->opt0 = cpu_to_be64(opt0);
        rpl5->opt2 = cpu_to_be32(opt2);
-       rpl5->iss = cpu_to_be32((prandom_u32() & ~7UL) - 1);
+       rpl5->iss = cpu_to_be32((get_random_u32() & ~7UL) - 1);
        set_wr_txq(skb, CPL_PRIORITY_SETUP, csk->port_id);
        t4_set_arp_err_handler(skb, sk, chtls_accept_rpl_arp_failure);
        cxgb4_l2t_send(csk->egress_dev, skb, csk->l2t_entry);
@@ -1466,7 +1466,7 @@ static void make_established(struct sock *sk, u32 snd_isn, unsigned int opt)
        tp->write_seq = snd_isn;
        tp->snd_nxt = snd_isn;
        tp->snd_una = snd_isn;
-       inet_sk(sk)->inet_id = prandom_u32();
+       inet_sk(sk)->inet_id = get_random_u16();
        assign_rxopt(sk, opt);
 
        if (tp->rcv_wnd > (RCV_BUFSIZ_M << 10))
index 539992d..a425608 100644 (file)
@@ -919,8 +919,8 @@ static int csk_wait_memory(struct chtls_dev *cdev,
        current_timeo = *timeo_p;
        noblock = (*timeo_p ? false : true);
        if (csk_mem_free(cdev, sk)) {
-               current_timeo = (prandom_u32() % (HZ / 5)) + 2;
-               vm_wait = (prandom_u32() % (HZ / 5)) + 2;
+               current_timeo = prandom_u32_max(HZ / 5) + 2;
+               vm_wait = prandom_u32_max(HZ / 5) + 2;
        }
 
        add_wait_queue(sk_sleep(sk), &wait);
index 023682c..9e59669 100644 (file)
@@ -129,7 +129,7 @@ static int rocker_reg_test(const struct rocker *rocker)
        u64 test_reg;
        u64 rnd;
 
-       rnd = prandom_u32();
+       rnd = get_random_u32();
        rnd >>= 1;
        rocker_write32(rocker, TEST_REG, rnd);
        test_reg = rocker_read32(rocker, TEST_REG);
@@ -139,9 +139,9 @@ static int rocker_reg_test(const struct rocker *rocker)
                return -EIO;
        }
 
-       rnd = prandom_u32();
+       rnd = get_random_u32();
        rnd <<= 31;
-       rnd |= prandom_u32();
+       rnd |= get_random_u32();
        rocker_write64(rocker, TEST_REG64, rnd);
        test_reg = rocker_read64(rocker, TEST_REG64);
        if (test_reg != rnd * 2) {
@@ -224,7 +224,7 @@ static int rocker_dma_test_offset(const struct rocker *rocker,
        if (err)
                goto unmap;
 
-       prandom_bytes(buf, ROCKER_TEST_DMA_BUF_SIZE);
+       get_random_bytes(buf, ROCKER_TEST_DMA_BUF_SIZE);
        for (i = 0; i < ROCKER_TEST_DMA_BUF_SIZE; i++)
                expect[i] = ~buf[i];
        err = rocker_dma_test_one(rocker, wait, ROCKER_TEST_DMA_CTRL_INVERT,
index 3e69079..791b4a5 100644 (file)
@@ -438,7 +438,7 @@ static int transmit(struct baycom_state *bc, int cnt, unsigned char stat)
                        if ((--bc->hdlctx.slotcnt) > 0)
                                return 0;
                        bc->hdlctx.slotcnt = bc->ch_params.slottime;
-                       if ((prandom_u32() % 256) > bc->ch_params.ppersist)
+                       if (get_random_u8() > bc->ch_params.ppersist)
                                return 0;
                }
        }
index a6184d6..2263029 100644 (file)
@@ -377,7 +377,7 @@ void hdlcdrv_arbitrate(struct net_device *dev, struct hdlcdrv_state *s)
        if ((--s->hdlctx.slotcnt) > 0)
                return;
        s->hdlctx.slotcnt = s->ch_params.slottime;
-       if ((prandom_u32() % 256) > s->ch_params.ppersist)
+       if (get_random_u8() > s->ch_params.ppersist)
                return;
        start_tx(dev, s);
 }
index 980f2be..2ed2f83 100644 (file)
@@ -626,7 +626,7 @@ static void yam_arbitrate(struct net_device *dev)
        yp->slotcnt = yp->slot / 10;
 
        /* is random > persist ? */
-       if ((prandom_u32() % 256) > yp->pers)
+       if (get_random_u8() > yp->pers)
                return;
 
        yam_start_tx(dev, yp);
index 9e9adde..349b7b1 100644 (file)
@@ -1758,7 +1758,7 @@ static int qca808x_phy_fast_retrain_config(struct phy_device *phydev)
 
 static int qca808x_phy_ms_random_seed_set(struct phy_device *phydev)
 {
-       u16 seed_value = (prandom_u32() % QCA808X_MASTER_SLAVE_SEED_RANGE);
+       u16 seed_value = prandom_u32_max(QCA808X_MASTER_SLAVE_SEED_RANGE);
 
        return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
                        QCA808X_MASTER_SLAVE_SEED_CFG,
index 41db10f..19eac00 100644 (file)
@@ -284,7 +284,7 @@ static __init bool randomized_test(void)
        mutex_lock(&mutex);
 
        for (i = 0; i < NUM_RAND_ROUTES; ++i) {
-               prandom_bytes(ip, 4);
+               get_random_bytes(ip, 4);
                cidr = prandom_u32_max(32) + 1;
                peer = peers[prandom_u32_max(NUM_PEERS)];
                if (wg_allowedips_insert_v4(&t, (struct in_addr *)ip, cidr,
@@ -299,7 +299,7 @@ static __init bool randomized_test(void)
                }
                for (j = 0; j < NUM_MUTATED_ROUTES; ++j) {
                        memcpy(mutated, ip, 4);
-                       prandom_bytes(mutate_mask, 4);
+                       get_random_bytes(mutate_mask, 4);
                        mutate_amount = prandom_u32_max(32);
                        for (k = 0; k < mutate_amount / 8; ++k)
                                mutate_mask[k] = 0xff;
@@ -310,7 +310,7 @@ static __init bool randomized_test(void)
                        for (k = 0; k < 4; ++k)
                                mutated[k] = (mutated[k] & mutate_mask[k]) |
                                             (~mutate_mask[k] &
-                                             prandom_u32_max(256));
+                                             get_random_u8());
                        cidr = prandom_u32_max(32) + 1;
                        peer = peers[prandom_u32_max(NUM_PEERS)];
                        if (wg_allowedips_insert_v4(&t,
@@ -328,7 +328,7 @@ static __init bool randomized_test(void)
        }
 
        for (i = 0; i < NUM_RAND_ROUTES; ++i) {
-               prandom_bytes(ip, 16);
+               get_random_bytes(ip, 16);
                cidr = prandom_u32_max(128) + 1;
                peer = peers[prandom_u32_max(NUM_PEERS)];
                if (wg_allowedips_insert_v6(&t, (struct in6_addr *)ip, cidr,
@@ -343,7 +343,7 @@ static __init bool randomized_test(void)
                }
                for (j = 0; j < NUM_MUTATED_ROUTES; ++j) {
                        memcpy(mutated, ip, 16);
-                       prandom_bytes(mutate_mask, 16);
+                       get_random_bytes(mutate_mask, 16);
                        mutate_amount = prandom_u32_max(128);
                        for (k = 0; k < mutate_amount / 8; ++k)
                                mutate_mask[k] = 0xff;
@@ -354,7 +354,7 @@ static __init bool randomized_test(void)
                        for (k = 0; k < 4; ++k)
                                mutated[k] = (mutated[k] & mutate_mask[k]) |
                                             (~mutate_mask[k] &
-                                             prandom_u32_max(256));
+                                             get_random_u8());
                        cidr = prandom_u32_max(128) + 1;
                        peer = peers[prandom_u32_max(NUM_PEERS)];
                        if (wg_allowedips_insert_v6(&t,
@@ -381,13 +381,13 @@ static __init bool randomized_test(void)
 
        for (j = 0;; ++j) {
                for (i = 0; i < NUM_QUERIES; ++i) {
-                       prandom_bytes(ip, 4);
+                       get_random_bytes(ip, 4);
                        if (lookup(t.root4, 32, ip) != horrible_allowedips_lookup_v4(&h, (struct in_addr *)ip)) {
                                horrible_allowedips_lookup_v4(&h, (struct in_addr *)ip);
                                pr_err("allowedips random v4 self-test: FAIL\n");
                                goto free;
                        }
-                       prandom_bytes(ip, 16);
+                       get_random_bytes(ip, 16);
                        if (lookup(t.root6, 128, ip) != horrible_allowedips_lookup_v6(&h, (struct in6_addr *)ip)) {
                                pr_err("allowedips random v6 self-test: FAIL\n");
                                goto free;
index 479041f..10d9d9c 100644 (file)
@@ -1128,7 +1128,7 @@ static void brcmf_p2p_afx_handler(struct work_struct *work)
        if (afx_hdl->is_listen && afx_hdl->my_listen_chan)
                /* 100ms ~ 300ms */
                err = brcmf_p2p_discover_listen(p2p, afx_hdl->my_listen_chan,
-                                               100 * (1 + prandom_u32() % 3));
+                                               100 * (1 + prandom_u32_max(3)));
        else
                err = brcmf_p2p_act_frm_search(p2p, afx_hdl->peer_listen_chan);
 
index d0a7465..170c61c 100644 (file)
@@ -177,7 +177,7 @@ static int brcmf_pno_set_random(struct brcmf_if *ifp, struct brcmf_pno_info *pi)
        memcpy(pfn_mac.mac, mac_addr, ETH_ALEN);
        for (i = 0; i < ETH_ALEN; i++) {
                pfn_mac.mac[i] &= mac_mask[i];
-               pfn_mac.mac[i] |= get_random_int() & ~(mac_mask[i]);
+               pfn_mac.mac[i] |= get_random_u8() & ~(mac_mask[i]);
        }
        /* Clear multi bit */
        pfn_mac.mac[0] &= 0xFE;
index ed586e6..de0c545 100644 (file)
@@ -1099,7 +1099,7 @@ static void iwl_mvm_mac_ctxt_cmd_fill_ap(struct iwl_mvm *mvm,
                        iwl_mvm_mac_ap_iterator, &data);
 
                if (data.beacon_device_ts) {
-                       u32 rand = (prandom_u32() % (64 - 36)) + 36;
+                       u32 rand = prandom_u32_max(64 - 36) + 36;
                        mvmvif->ap_beacon_time = data.beacon_device_ts +
                                ieee80211_tu_to_usec(data.beacon_int * rand /
                                                     100);
index 535995e..bcd564d 100644 (file)
@@ -239,7 +239,7 @@ mwifiex_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
        tx_info->pkt_len = pkt_len;
 
        mwifiex_form_mgmt_frame(skb, buf, len);
-       *cookie = prandom_u32() | 1;
+       *cookie = get_random_u32() | 1;
 
        if (ieee80211_is_action(mgmt->frame_control))
                skb = mwifiex_clone_skb_for_tx_status(priv,
@@ -303,7 +303,7 @@ mwifiex_cfg80211_remain_on_channel(struct wiphy *wiphy,
                                         duration);
 
        if (!ret) {
-               *cookie = prandom_u32() | 1;
+               *cookie = get_random_u32() | 1;
                priv->roc_cfg.cookie = *cookie;
                priv->roc_cfg.chan = *chan;
 
index b890479..9bbfff8 100644 (file)
@@ -1161,7 +1161,7 @@ static int mgmt_tx(struct wiphy *wiphy,
        const u8 *vendor_ie;
        int ret = 0;
 
-       *cookie = prandom_u32();
+       *cookie = get_random_u32();
        priv->tx_cookie = *cookie;
        mgmt = (const struct ieee80211_mgmt *)buf;
 
index bfdf03b..73e6f94 100644 (file)
@@ -449,7 +449,7 @@ qtnf_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
 {
        struct qtnf_vif *vif = qtnf_netdev_get_priv(wdev->netdev);
        const struct ieee80211_mgmt *mgmt_frame = (void *)params->buf;
-       u32 short_cookie = prandom_u32();
+       u32 short_cookie = get_random_u32();
        u16 flags = 0;
        u16 freq;
 
index 5a3e7a6..4a9e4b5 100644 (file)
@@ -1594,7 +1594,7 @@ static int cw1200_get_prio_queue(struct cw1200_common *priv,
                edca = &priv->edca.params[i];
                score = ((edca->aifns + edca->cwmin) << 16) +
                        ((edca->cwmax - edca->cwmin) *
-                        (get_random_int() & 0xFFFF));
+                        get_random_u16());
                if (score < best && (winner < 0 || i != 3)) {
                        best = score;
                        winner = i;
index 3e3922d..28c0f06 100644 (file)
@@ -6100,7 +6100,7 @@ static int wl1271_register_hw(struct wl1271 *wl)
                        wl1271_warning("Fuse mac address is zero. using random mac");
                        /* Use TI oui and a random nic */
                        oui_addr = WLCORE_TI_OUI_ADDRESS;
-                       nic_addr = get_random_int();
+                       nic_addr = get_random_u32();
                } else {
                        oui_addr = wl->fuse_oui_addr;
                        /* fuse has the BD_ADDR, the WLAN addresses are the next two */
index 04bd28f..d90e4f0 100644 (file)
@@ -23,7 +23,7 @@ u32 nvme_auth_get_seqnum(void)
 
        mutex_lock(&nvme_dhchap_mutex);
        if (!nvme_dhchap_seqnum)
-               nvme_dhchap_seqnum = prandom_u32();
+               nvme_dhchap_seqnum = get_random_u32();
        else {
                nvme_dhchap_seqnum++;
                if (!nvme_dhchap_seqnum)
index 53d91bf..c07d2e3 100644 (file)
@@ -254,7 +254,7 @@ static void send_act_open_req(struct cxgbi_sock *csk, struct sk_buff *skb,
        } else if (is_t5(lldi->adapter_type)) {
                struct cpl_t5_act_open_req *req =
                                (struct cpl_t5_act_open_req *)skb->head;
-               u32 isn = (prandom_u32() & ~7UL) - 1;
+               u32 isn = (get_random_u32() & ~7UL) - 1;
 
                INIT_TP_WR(req, 0);
                OPCODE_TID(req) = cpu_to_be32(MK_OPCODE_TID(CPL_ACT_OPEN_REQ,
@@ -282,7 +282,7 @@ static void send_act_open_req(struct cxgbi_sock *csk, struct sk_buff *skb,
        } else {
                struct cpl_t6_act_open_req *req =
                                (struct cpl_t6_act_open_req *)skb->head;
-               u32 isn = (prandom_u32() & ~7UL) - 1;
+               u32 isn = (get_random_u32() & ~7UL) - 1;
 
                INIT_TP_WR(req, 0);
                OPCODE_TID(req) = cpu_to_be32(MK_OPCODE_TID(CPL_ACT_OPEN_REQ,
index 39e16ea..ddc0480 100644 (file)
@@ -2233,7 +2233,7 @@ static void fcoe_ctlr_vn_restart(struct fcoe_ctlr *fip)
 
        if (fip->probe_tries < FIP_VN_RLIM_COUNT) {
                fip->probe_tries++;
-               wait = prandom_u32() % FIP_VN_PROBE_WAIT;
+               wait = prandom_u32_max(FIP_VN_PROBE_WAIT);
        } else
                wait = FIP_VN_RLIM_INT;
        mod_timer(&fip->timer, jiffies + msecs_to_jiffies(wait));
@@ -3125,7 +3125,7 @@ static void fcoe_ctlr_vn_timeout(struct fcoe_ctlr *fip)
                                          fcoe_all_vn2vn, 0);
                        fip->port_ka_time = jiffies +
                                 msecs_to_jiffies(FIP_VN_BEACON_INT +
-                                       (prandom_u32() % FIP_VN_BEACON_FUZZ));
+                                       prandom_u32_max(FIP_VN_BEACON_FUZZ));
                }
                if (time_before(fip->port_ka_time, next_time))
                        next_time = fip->port_ka_time;
index c7f834b..d38ebd7 100644 (file)
@@ -2156,8 +2156,8 @@ lpfc_check_pending_fcoe_event(struct lpfc_hba *phba, uint8_t unreg_fcf)
  * This function makes an running random selection decision on FCF record to
  * use through a sequence of @fcf_cnt eligible FCF records with equal
  * probability. To perform integer manunipulation of random numbers with
- * size unit32_t, the lower 16 bits of the 32-bit random number returned
- * from prandom_u32() are taken as the random random number generated.
+ * size unit32_t, a 16-bit random number returned from get_random_u16() is
+ * taken as the random random number generated.
  *
  * Returns true when outcome is for the newly read FCF record should be
  * chosen; otherwise, return false when outcome is for keeping the previously
@@ -2169,7 +2169,7 @@ lpfc_sli4_new_fcf_random_select(struct lpfc_hba *phba, uint32_t fcf_cnt)
        uint32_t rand_num;
 
        /* Get 16-bit uniform random number */
-       rand_num = 0xFFFF & prandom_u32();
+       rand_num = get_random_u16();
 
        /* Decision with probability 1/fcf_cnt */
        if ((fcf_cnt * rand_num) < 0xFFFF)
index cecfb2c..df2fe7b 100644 (file)
@@ -618,7 +618,7 @@ static int qedi_cm_alloc_mem(struct qedi_ctx *qedi)
                                sizeof(struct qedi_endpoint *)), GFP_KERNEL);
        if (!qedi->ep_tbl)
                return -ENOMEM;
-       port_id = prandom_u32() % QEDI_LOCAL_PORT_RANGE;
+       port_id = prandom_u32_max(QEDI_LOCAL_PORT_RANGE);
        if (qedi_init_id_tbl(&qedi->lcl_port_tbl, QEDI_LOCAL_PORT_RANGE,
                             QEDI_LOCAL_PORT_MIN, port_id)) {
                qedi_cm_free_mem(qedi);
index 3336d2b..d9204c5 100644 (file)
@@ -1202,7 +1202,7 @@ cxgbit_pass_accept_rpl(struct cxgbit_sock *csk, struct cpl_pass_accept_req *req)
        opt2 |= CONG_CNTRL_V(CONG_ALG_NEWRENO);
 
        opt2 |= T5_ISS_F;
-       rpl5->iss = cpu_to_be32((prandom_u32() & ~7UL) - 1);
+       rpl5->iss = cpu_to_be32((get_random_u32() & ~7UL) - 1);
 
        opt2 |= T5_OPT_2_VALID_F;
 
index bbb248a..f00b2f6 100644 (file)
@@ -2437,7 +2437,7 @@ int tb_xdomain_init(void)
        tb_property_add_immediate(xdomain_property_dir, "deviceid", 0x1);
        tb_property_add_immediate(xdomain_property_dir, "devicerv", 0x80000100);
 
-       xdomain_property_block_gen = prandom_u32();
+       xdomain_property_block_gen = get_random_u32();
        return 0;
 }
 
index fd5d701..00d789b 100644 (file)
@@ -167,7 +167,7 @@ static int uvesafb_exec(struct uvesafb_ktask *task)
        memcpy(&m->id, &uvesafb_cn_id, sizeof(m->id));
        m->seq = seq;
        m->len = len;
-       m->ack = prandom_u32();
+       m->ack = get_random_u32();
 
        /* uvesafb_task structure */
        memcpy(m + 1, &task->t, sizeof(task->t));
index 9ebb7ce..4af5e55 100644 (file)
@@ -362,7 +362,7 @@ static int ceph_fill_fragtree(struct inode *inode,
        if (nsplits != ci->i_fragtree_nsplits) {
                update = true;
        } else if (nsplits) {
-               i = prandom_u32() % nsplits;
+               i = prandom_u32_max(nsplits);
                id = le32_to_cpu(fragtree->splits[i].frag);
                if (!__ceph_find_frag(ci, id))
                        update = true;
index 8d0a6d2..3fbabc9 100644 (file)
@@ -29,7 +29,7 @@ static int __mdsmap_get_random_mds(struct ceph_mdsmap *m, bool ignore_laggy)
                return -1;
 
        /* pick */
-       n = prandom_u32() % n;
+       n = prandom_u32_max(n);
        for (j = 0, i = 0; i < m->possible_max_rank; i++) {
                if (CEPH_MDS_IS_READY(i, ignore_laggy))
                        j++;
index a795437..5590a1e 100644 (file)
@@ -552,7 +552,7 @@ static int exfat_fill_inode(struct inode *inode, struct exfat_dir_entry *info)
        inode->i_uid = sbi->options.fs_uid;
        inode->i_gid = sbi->options.fs_gid;
        inode_inc_iversion(inode);
-       inode->i_generation = prandom_u32();
+       inode->i_generation = get_random_u32();
 
        if (info->attr & ATTR_SUBDIR) { /* directory */
                inode->i_generation &= ~1;
index 998dd2a..f4944c4 100644 (file)
@@ -277,8 +277,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
                int best_ndir = inodes_per_group;
                int best_group = -1;
 
-               group = prandom_u32();
-               parent_group = (unsigned)group % ngroups;
+               parent_group = prandom_u32_max(ngroups);
                for (i = 0; i < ngroups; i++) {
                        group = (parent_group + i) % ngroups;
                        desc = ext2_get_group_desc (sb, group, NULL);
index 208b87c..e9bc466 100644 (file)
@@ -463,10 +463,9 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent,
                        hinfo.hash_version = DX_HASH_HALF_MD4;
                        hinfo.seed = sbi->s_hash_seed;
                        ext4fs_dirhash(parent, qstr->name, qstr->len, &hinfo);
-                       grp = hinfo.hash;
+                       parent_group = hinfo.hash % ngroups;
                } else
-                       grp = prandom_u32();
-               parent_group = (unsigned)grp % ngroups;
+                       parent_group = prandom_u32_max(ngroups);
                for (i = 0; i < ngroups; i++) {
                        g = (parent_group + i) % ngroups;
                        get_orlov_stats(sb, g, flex_size, &stats);
@@ -1280,7 +1279,7 @@ got:
                                        EXT4_GROUP_INFO_IBITMAP_CORRUPT);
                goto out;
        }
-       inode->i_generation = prandom_u32();
+       inode->i_generation = get_random_u32();
 
        /* Precompute checksum seed for inode metadata */
        if (ext4_has_metadata_csum(sb)) {
index 4d49c5c..ded5355 100644 (file)
@@ -454,8 +454,8 @@ static long swap_inode_boot_loader(struct super_block *sb,
        inode->i_ctime = inode_bl->i_ctime = current_time(inode);
        inode_inc_iversion(inode);
 
-       inode->i_generation = prandom_u32();
-       inode_bl->i_generation = prandom_u32();
+       inode->i_generation = get_random_u32();
+       inode_bl->i_generation = get_random_u32();
        ext4_reset_inode_seed(inode);
        ext4_reset_inode_seed(inode_bl);
 
index 9af68a7..588cb09 100644 (file)
@@ -265,7 +265,7 @@ static unsigned int mmp_new_seq(void)
        u32 new_seq;
 
        do {
-               new_seq = prandom_u32();
+               new_seq = get_random_u32();
        } while (new_seq > EXT4_MMP_SEQ_MAX);
 
        return new_seq;
index d733db8..989365b 100644 (file)
@@ -3782,8 +3782,7 @@ cont_thread:
                        }
                        if (!progress) {
                                elr->lr_next_sched = jiffies +
-                                       (prandom_u32()
-                                        % (EXT4_DEF_LI_MAX_START_DELAY * HZ));
+                                       prandom_u32_max(EXT4_DEF_LI_MAX_START_DELAY * HZ);
                        }
                        if (time_before(elr->lr_next_sched, next_wakeup))
                                next_wakeup = elr->lr_next_sched;
@@ -3930,8 +3929,8 @@ static struct ext4_li_request *ext4_li_request_new(struct super_block *sb,
         * spread the inode table initialization requests
         * better.
         */
-       elr->lr_next_sched = jiffies + (prandom_u32() %
-                               (EXT4_DEF_LI_MAX_START_DELAY * HZ));
+       elr->lr_next_sched = jiffies + prandom_u32_max(
+                               EXT4_DEF_LI_MAX_START_DELAY * HZ);
        return elr;
 }
 
index d36bcb2..4546e01 100644 (file)
@@ -282,7 +282,7 @@ static void select_policy(struct f2fs_sb_info *sbi, int gc_type,
 
        /* let's select beginning hot/small space first in no_heap mode*/
        if (f2fs_need_rand_seg(sbi))
-               p->offset = prandom_u32() % (MAIN_SECS(sbi) * sbi->segs_per_sec);
+               p->offset = prandom_u32_max(MAIN_SECS(sbi) * sbi->segs_per_sec);
        else if (test_opt(sbi, NOHEAP) &&
                (type == CURSEG_HOT_DATA || IS_NODESEG(type)))
                p->offset = 0;
index d5065a5..a389772 100644 (file)
@@ -50,7 +50,7 @@ static struct inode *f2fs_new_inode(struct user_namespace *mnt_userns,
        inode->i_blocks = 0;
        inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
        F2FS_I(inode)->i_crtime = inode->i_mtime;
-       inode->i_generation = prandom_u32();
+       inode->i_generation = get_random_u32();
 
        if (S_ISDIR(inode->i_mode))
                F2FS_I(inode)->i_current_depth = 1;
index 289bcb7..acf3d3f 100644 (file)
@@ -2534,7 +2534,7 @@ static unsigned int __get_next_segno(struct f2fs_sb_info *sbi, int type)
 
        sanity_check_seg_type(sbi, seg_type);
        if (f2fs_need_rand_seg(sbi))
-               return prandom_u32() % (MAIN_SECS(sbi) * sbi->segs_per_sec);
+               return prandom_u32_max(MAIN_SECS(sbi) * sbi->segs_per_sec);
 
        /* if segs_per_sec is large than 1, we need to keep original policy. */
        if (__is_large_section(sbi))
@@ -2588,7 +2588,7 @@ static void new_curseg(struct f2fs_sb_info *sbi, int type, bool new_sec)
        curseg->alloc_type = LFS;
        if (F2FS_OPTION(sbi).fs_mode == FS_MODE_FRAGMENT_BLK)
                curseg->fragment_remained_chunk =
-                               prandom_u32() % sbi->max_fragment_chunk + 1;
+                               prandom_u32_max(sbi->max_fragment_chunk) + 1;
 }
 
 static int __next_free_blkoff(struct f2fs_sb_info *sbi,
@@ -2625,9 +2625,9 @@ static void __refresh_next_blkoff(struct f2fs_sb_info *sbi,
                        /* To allocate block chunks in different sizes, use random number */
                        if (--seg->fragment_remained_chunk <= 0) {
                                seg->fragment_remained_chunk =
-                                  prandom_u32() % sbi->max_fragment_chunk + 1;
+                                  prandom_u32_max(sbi->max_fragment_chunk) + 1;
                                seg->next_blkoff +=
-                                  prandom_u32() % sbi->max_fragment_hole + 1;
+                                  prandom_u32_max(sbi->max_fragment_hole) + 1;
                        }
                }
        }
index a38238d..1cbcc46 100644 (file)
@@ -523,7 +523,7 @@ int fat_fill_inode(struct inode *inode, struct msdos_dir_entry *de)
        inode->i_uid = sbi->options.fs_uid;
        inode->i_gid = sbi->options.fs_gid;
        inode_inc_iversion(inode);
-       inode->i_generation = prandom_u32();
+       inode->i_generation = get_random_u32();
 
        if ((de->attr & ATTR_DIR) && !IS_FREE(de->name)) {
                inode->i_generation &= ~1;
index 198d7ab..4e71850 100644 (file)
@@ -4375,8 +4375,8 @@ nfsd4_init_leases_net(struct nfsd_net *nn)
        nn->nfsd4_grace = 90;
        nn->somebody_reclaimed = false;
        nn->track_reclaim_completes = false;
-       nn->clverifier_counter = prandom_u32();
-       nn->clientid_base = prandom_u32();
+       nn->clverifier_counter = get_random_u32();
+       nn->clientid_base = get_random_u32();
        nn->clientid_counter = nn->clientid_base + 1;
        nn->s2s_cp_cl_id = nn->clientid_counter++;
 
index e7c4940..0d611a6 100644 (file)
@@ -3819,7 +3819,7 @@ int log_replay(struct ntfs_inode *ni, bool *initialized)
                }
 
                log_init_pg_hdr(log, page_size, page_size, 1, 1);
-               log_create(log, l_size, 0, get_random_int(), false, false);
+               log_create(log, l_size, 0, get_random_u32(), false, false);
 
                log->ra = ra;
 
@@ -3893,7 +3893,7 @@ check_restart_area:
 
                /* Do some checks based on whether we have a valid log page. */
                if (!rst_info.valid_page) {
-                       open_log_count = get_random_int();
+                       open_log_count = get_random_u32();
                        goto init_log_instance;
                }
                open_log_count = le32_to_cpu(ra2->open_log_count);
@@ -4044,7 +4044,7 @@ find_oldest:
                memcpy(ra->clients, Add2Ptr(ra2, t16),
                       le16_to_cpu(ra2->ra_len) - t16);
 
-               log->current_openlog_count = get_random_int();
+               log->current_openlog_count = get_random_u32();
                ra->open_log_count = cpu_to_le32(log->current_openlog_count);
                log->ra_size = offsetof(struct RESTART_AREA, clients) +
                               sizeof(struct CLIENT_REC);
index fc718f6..3f128b9 100644 (file)
@@ -2467,7 +2467,7 @@ error_dump:
 
 static inline int chance(unsigned int n, unsigned int out_of)
 {
-       return !!((prandom_u32() % out_of) + 1 <= n);
+       return !!(prandom_u32_max(out_of) + 1 <= n);
 
 }
 
@@ -2485,13 +2485,13 @@ static int power_cut_emulated(struct ubifs_info *c, int lnum, int write)
                        if (chance(1, 2)) {
                                d->pc_delay = 1;
                                /* Fail within 1 minute */
-                               delay = prandom_u32() % 60000;
+                               delay = prandom_u32_max(60000);
                                d->pc_timeout = jiffies;
                                d->pc_timeout += msecs_to_jiffies(delay);
                                ubifs_warn(c, "failing after %lums", delay);
                        } else {
                                d->pc_delay = 2;
-                               delay = prandom_u32() % 10000;
+                               delay = prandom_u32_max(10000);
                                /* Fail within 10000 operations */
                                d->pc_cnt_max = delay;
                                ubifs_warn(c, "failing after %lu calls", delay);
@@ -2571,7 +2571,7 @@ static int corrupt_data(const struct ubifs_info *c, const void *buf,
        unsigned int from, to, ffs = chance(1, 2);
        unsigned char *p = (void *)buf;
 
-       from = prandom_u32() % len;
+       from = prandom_u32_max(len);
        /* Corruption span max to end of write unit */
        to = min(len, ALIGN(from + 1, c->max_write_size));
 
@@ -2581,7 +2581,7 @@ static int corrupt_data(const struct ubifs_info *c, const void *buf,
        if (ffs)
                memset(p + from, 0xFF, to - from);
        else
-               prandom_bytes(p + from, to - from);
+               get_random_bytes(p + from, to - from);
 
        return to;
 }
index 2b1d7c4..d025099 100644 (file)
@@ -503,7 +503,7 @@ static void mark_inode_clean(struct ubifs_info *c, struct ubifs_inode *ui)
 static void set_dent_cookie(struct ubifs_info *c, struct ubifs_dent_node *dent)
 {
        if (c->double_hash)
-               dent->cookie = (__force __le32) prandom_u32();
+               dent->cookie = (__force __le32) get_random_u32();
        else
                dent->cookie = 0;
 }
index d76a19e..cfbc31f 100644 (file)
@@ -1970,28 +1970,28 @@ static int dbg_populate_lsave(struct ubifs_info *c)
 
        if (!dbg_is_chk_gen(c))
                return 0;
-       if (prandom_u32() & 3)
+       if (prandom_u32_max(4))
                return 0;
 
        for (i = 0; i < c->lsave_cnt; i++)
                c->lsave[i] = c->main_first;
 
        list_for_each_entry(lprops, &c->empty_list, list)
-               c->lsave[prandom_u32() % c->lsave_cnt] = lprops->lnum;
+               c->lsave[prandom_u32_max(c->lsave_cnt)] = lprops->lnum;
        list_for_each_entry(lprops, &c->freeable_list, list)
-               c->lsave[prandom_u32() % c->lsave_cnt] = lprops->lnum;
+               c->lsave[prandom_u32_max(c->lsave_cnt)] = lprops->lnum;
        list_for_each_entry(lprops, &c->frdi_idx_list, list)
-               c->lsave[prandom_u32() % c->lsave_cnt] = lprops->lnum;
+               c->lsave[prandom_u32_max(c->lsave_cnt)] = lprops->lnum;
 
        heap = &c->lpt_heap[LPROPS_DIRTY_IDX - 1];
        for (i = 0; i < heap->cnt; i++)
-               c->lsave[prandom_u32() % c->lsave_cnt] = heap->arr[i]->lnum;
+               c->lsave[prandom_u32_max(c->lsave_cnt)] = heap->arr[i]->lnum;
        heap = &c->lpt_heap[LPROPS_DIRTY - 1];
        for (i = 0; i < heap->cnt; i++)
-               c->lsave[prandom_u32() % c->lsave_cnt] = heap->arr[i]->lnum;
+               c->lsave[prandom_u32_max(c->lsave_cnt)] = heap->arr[i]->lnum;
        heap = &c->lpt_heap[LPROPS_FREE - 1];
        for (i = 0; i < heap->cnt; i++)
-               c->lsave[prandom_u32() % c->lsave_cnt] = heap->arr[i]->lnum;
+               c->lsave[prandom_u32_max(c->lsave_cnt)] = heap->arr[i]->lnum;
 
        return 1;
 }
index 58c92c9..01362ad 100644 (file)
@@ -700,7 +700,7 @@ static int alloc_idx_lebs(struct ubifs_info *c, int cnt)
                c->ilebs[c->ileb_cnt++] = lnum;
                dbg_cmt("LEB %d", lnum);
        }
-       if (dbg_is_chk_index(c) && !(prandom_u32() & 7))
+       if (dbg_is_chk_index(c) && !prandom_u32_max(8))
                return -ENOSPC;
        return 0;
 }
index e2bdf08..6261599 100644 (file)
@@ -1520,7 +1520,7 @@ xfs_alloc_ag_vextent_lastblock(
 
 #ifdef DEBUG
        /* Randomly don't execute the first algorithm. */
-       if (prandom_u32() & 1)
+       if (prandom_u32_max(2))
                return 0;
 #endif
 
index 6cdfd64..94db50e 100644 (file)
@@ -636,7 +636,7 @@ xfs_ialloc_ag_alloc(
        /* randomly do sparse inode allocations */
        if (xfs_has_sparseinodes(tp->t_mountp) &&
            igeo->ialloc_min_blks < igeo->ialloc_blks)
-               do_sparse = prandom_u32() & 1;
+               do_sparse = prandom_u32_max(2);
 #endif
 
        /*
@@ -805,7 +805,7 @@ sparse_alloc:
         * number from being easily guessable.
         */
        error = xfs_ialloc_inode_init(args.mp, tp, NULL, newlen, pag->pag_agno,
-                       args.agbno, args.len, prandom_u32());
+                       args.agbno, args.len, get_random_u32());
 
        if (error)
                return error;
index 296faa4..7db588e 100644 (file)
@@ -274,7 +274,7 @@ xfs_errortag_test(
 
        ASSERT(error_tag < XFS_ERRTAG_MAX);
        randfactor = mp->m_errortag[error_tag];
-       if (!randfactor || prandom_u32() % randfactor)
+       if (!randfactor || prandom_u32_max(randfactor))
                return false;
 
        xfs_warn_ratelimited(mp,
index 2bbe791..eae7427 100644 (file)
@@ -596,7 +596,7 @@ xfs_iget_cache_miss(
         */
        if (xfs_has_v3inodes(mp) &&
            (flags & XFS_IGET_CREATE) && !xfs_has_ikeep(mp)) {
-               VFS_I(ip)->i_generation = prandom_u32();
+               VFS_I(ip)->i_generation = get_random_u32();
        } else {
                struct xfs_buf          *bp;
 
index f6e7e4f..f02a0dd 100644 (file)
@@ -3544,7 +3544,7 @@ xlog_ticket_alloc(
        tic->t_curr_res         = unit_res;
        tic->t_cnt              = cnt;
        tic->t_ocnt             = cnt;
-       tic->t_tid              = prandom_u32();
+       tic->t_tid              = get_random_u32();
        if (permanent)
                tic->t_flags |= XLOG_TIC_PERM_RESERV;
 
index 378956c..efef68c 100644 (file)
@@ -516,7 +516,7 @@ static inline int node_random(const nodemask_t *maskp)
                bit = first_node(*maskp);
                break;
        default:
-               bit = find_nth_bit(maskp->bits, MAX_NUMNODES, get_random_int() % w);
+               bit = find_nth_bit(maskp->bits, MAX_NUMNODES, prandom_u32_max(w));
                break;
        }
        return bit;
index 78db003..e0a0759 100644 (file)
 #include <linux/percpu.h>
 #include <linux/random.h>
 
-/* Deprecated: use get_random_u32 instead. */
-static inline u32 prandom_u32(void)
-{
-       return get_random_u32();
-}
-
-/* Deprecated: use get_random_bytes instead. */
-static inline void prandom_bytes(void *buf, size_t nbytes)
-{
-       return get_random_bytes(buf, nbytes);
-}
-
 struct rnd_state {
        __u32 s1, s2, s3, s4;
 };
index 08322f7..147a5e0 100644 (file)
@@ -42,10 +42,6 @@ u8 get_random_u8(void);
 u16 get_random_u16(void);
 u32 get_random_u32(void);
 u64 get_random_u64(void);
-static inline unsigned int get_random_int(void)
-{
-       return get_random_u32();
-}
 static inline unsigned long get_random_long(void)
 {
 #if BITS_PER_LONG == 64
@@ -100,7 +96,6 @@ declare_get_random_var_wait(u8, u8)
 declare_get_random_var_wait(u16, u16)
 declare_get_random_var_wait(u32, u32)
 declare_get_random_var_wait(u64, u32)
-declare_get_random_var_wait(int, unsigned int)
 declare_get_random_var_wait(long, unsigned long)
 #undef declare_get_random_var
 
index 980daa6..c81021a 100644 (file)
@@ -43,7 +43,7 @@ void nf_queue_entry_free(struct nf_queue_entry *entry);
 static inline void init_hashrandom(u32 *jhash_initval)
 {
        while (*jhash_initval == 0)
-               *jhash_initval = prandom_u32();
+               *jhash_initval = get_random_u32();
 }
 
 static inline u32 hash_v4(const struct iphdr *iph, u32 initval)
index 454ac2b..425364d 100644 (file)
@@ -363,7 +363,7 @@ static inline unsigned long red_calc_qavg(const struct red_parms *p,
 
 static inline u32 red_random(const struct red_parms *p)
 {
-       return reciprocal_divide(prandom_u32(), p->max_P_reciprocal);
+       return reciprocal_divide(get_random_u32(), p->max_P_reciprocal);
 }
 
 static inline int red_mark_probability(const struct red_parms *p,
index 08038a3..9e464f6 100644 (file)
@@ -2109,7 +2109,7 @@ static inline kuid_t sock_net_uid(const struct net *net, const struct sock *sk)
 
 static inline u32 net_tx_rndhash(void)
 {
-       u32 v = prandom_u32();
+       u32 v = get_random_u32();
 
        return v ?: 1;
 }
index b9ea539..48ee750 100644 (file)
@@ -158,7 +158,7 @@ static struct bpf_map *bloom_map_alloc(union bpf_attr *attr)
                        attr->value_size / sizeof(u32);
 
        if (!(attr->map_flags & BPF_F_ZERO_SEED))
-               bloom->hash_seed = get_random_int();
+               bloom->hash_seed = get_random_u32();
 
        return &bloom->map;
 }
index 59cf4dc..25a54e0 100644 (file)
@@ -1032,7 +1032,7 @@ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr,
        hdr->size = size;
        hole = min_t(unsigned int, size - (proglen + sizeof(*hdr)),
                     PAGE_SIZE - sizeof(*hdr));
-       start = (get_random_int() % hole) & ~(alignment - 1);
+       start = prandom_u32_max(hole) & ~(alignment - 1);
 
        /* Leave a random number of instructions before BPF code. */
        *image_ptr = &hdr->image[start];
@@ -1094,7 +1094,7 @@ bpf_jit_binary_pack_alloc(unsigned int proglen, u8 **image_ptr,
 
        hole = min_t(unsigned int, size - (proglen + sizeof(*ro_header)),
                     BPF_PROG_CHUNK_SIZE - sizeof(*ro_header));
-       start = (get_random_int() % hole) & ~(alignment - 1);
+       start = prandom_u32_max(hole) & ~(alignment - 1);
 
        *image_ptr = &ro_header->image[start];
        *rw_image = &(*rw_header)->image[start];
@@ -1216,7 +1216,7 @@ static int bpf_jit_blind_insn(const struct bpf_insn *from,
                              bool emit_zext)
 {
        struct bpf_insn *to = to_buff;
-       u32 imm_rnd = get_random_int();
+       u32 imm_rnd = get_random_u32();
        s16 off;
 
        BUILD_BUG_ON(BPF_REG_AX  + 1 != MAX_BPF_JIT_REG);
index ed3f8a5..f39ee3e 100644 (file)
@@ -527,7 +527,7 @@ static struct bpf_map *htab_map_alloc(union bpf_attr *attr)
        if (htab->map.map_flags & BPF_F_ZERO_SEED)
                htab->hashrnd = 0;
        else
-               htab->hashrnd = get_random_int();
+               htab->hashrnd = get_random_u32();
 
        htab_init_buckets(htab);
 
index 6f6d2d5..014ee09 100644 (file)
@@ -13350,7 +13350,7 @@ static int opt_subreg_zext_lo32_rnd_hi32(struct bpf_verifier_env *env,
                            aux[adj_idx].ptr_type == PTR_TO_CTX)
                                continue;
 
-                       imm_rnd = get_random_int();
+                       imm_rnd = get_random_u32();
                        rnd_hi32_patch[0] = insn;
                        rnd_hi32_patch[1].imm = imm_rnd;
                        rnd_hi32_patch[3].dst_reg = load_reg;
index 7571295..00cdf8f 100644 (file)
@@ -26,7 +26,7 @@
 static bool __init test_requires(void)
 {
        /* random should be initialized for the below tests */
-       return prandom_u32() + prandom_u32() != 0;
+       return get_random_u32() + get_random_u32() != 0;
 }
 
 /*
@@ -46,7 +46,7 @@ static bool __init test_encode_decode(void)
                unsigned long addr;
                size_t verif_size;
 
-               prandom_bytes(&addr, sizeof(addr));
+               get_random_bytes(&addr, sizeof(addr));
                if (addr < PAGE_SIZE)
                        addr = PAGE_SIZE;
 
index 3530041..43efb2a 100644 (file)
@@ -399,7 +399,7 @@ static int *get_random_order(int count)
                order[n] = n;
 
        for (n = count - 1; n > 1; n--) {
-               r = get_random_int() % (n + 1);
+               r = prandom_u32_max(n + 1);
                if (r != n) {
                        tmp = order[n];
                        order[n] = order[r];
@@ -538,7 +538,7 @@ static void stress_one_work(struct work_struct *work)
 {
        struct stress *stress = container_of(work, typeof(*stress), work);
        const int nlocks = stress->nlocks;
-       struct ww_mutex *lock = stress->locks + (get_random_int() % nlocks);
+       struct ww_mutex *lock = stress->locks + prandom_u32_max(nlocks);
        int err;
 
        do {
index cee5da1..8058bec 100644 (file)
@@ -310,7 +310,7 @@ static void clocksource_verify_choose_cpus(void)
         * CPUs that are currently online.
         */
        for (i = 1; i < n; i++) {
-               cpu = prandom_u32() % nr_cpu_ids;
+               cpu = prandom_u32_max(nr_cpu_ids);
                cpu = cpumask_next(cpu - 1, cpu_online_mask);
                if (cpu >= nr_cpu_ids)
                        cpu = cpumask_first(cpu_online_mask);
index a72a2c1..d4572db 100644 (file)
@@ -76,7 +76,7 @@ static void cmdline_test_lead_int(struct kunit *test)
                int rc = cmdline_test_values[i];
                int offset;
 
-               sprintf(in, "%u%s", get_random_int() % 256, str);
+               sprintf(in, "%u%s", get_random_u8(), str);
                /* Only first '-' after the number will advance the pointer */
                offset = strlen(in) - strlen(str) + !!(rc == 2);
                cmdline_do_one_test(test, in, rc, offset);
@@ -94,7 +94,7 @@ static void cmdline_test_tail_int(struct kunit *test)
                int rc = strcmp(str, "") ? (strcmp(str, "-") ? 0 : 1) : 1;
                int offset;
 
-               sprintf(in, "%s%u", str, get_random_int() % 256);
+               sprintf(in, "%s%u", str, get_random_u8());
                /*
                 * Only first and leading '-' not followed by integer
                 * will advance the pointer.
index 423784d..96e092d 100644 (file)
@@ -139,7 +139,7 @@ bool should_fail(struct fault_attr *attr, ssize_t size)
                        return false;
        }
 
-       if (attr->probability <= prandom_u32() % 100)
+       if (attr->probability <= prandom_u32_max(100))
                return false;
 
        if (!fail_stacktrace(attr))
index 1075458..7c3c011 100644 (file)
@@ -174,8 +174,8 @@ static int __init find_bit_test(void)
        bitmap_zero(bitmap2, BITMAP_LEN);
 
        while (nbits--) {
-               __set_bit(prandom_u32() % BITMAP_LEN, bitmap);
-               __set_bit(prandom_u32() % BITMAP_LEN, bitmap2);
+               __set_bit(prandom_u32_max(BITMAP_LEN), bitmap);
+               __set_bit(prandom_u32_max(BITMAP_LEN), bitmap2);
        }
 
        test_find_next_bit(bitmap, BITMAP_LEN);
index 5f0e71a..a0b2dbf 100644 (file)
@@ -694,7 +694,7 @@ static void kobject_release(struct kref *kref)
 {
        struct kobject *kobj = container_of(kref, struct kobject, kref);
 #ifdef CONFIG_DEBUG_KOBJECT_RELEASE
-       unsigned long delay = HZ + HZ * (get_random_int() & 0x3);
+       unsigned long delay = HZ + HZ * prandom_u32_max(4);
        pr_info("kobject: '%s' (%p): %s, parent %p (delayed %ld)\n",
                 kobject_name(kobj), kobj, __func__, kobj->parent, delay);
        INIT_DELAYED_WORK(&kobj->release, kobject_delayed_cleanup);
index d5d9029..32060b8 100644 (file)
@@ -47,7 +47,7 @@
  *     @state: pointer to state structure holding seeded state.
  *
  *     This is used for pseudo-randomness with no outside seeding.
- *     For more random results, use prandom_u32().
+ *     For more random results, use get_random_u32().
  */
 u32 prandom_u32_state(struct rnd_state *state)
 {
@@ -69,7 +69,7 @@ EXPORT_SYMBOL(prandom_u32_state);
  *     @bytes: the requested number of bytes
  *
  *     This is used for pseudo-randomness with no outside seeding.
- *     For more random results, use prandom_bytes().
+ *     For more random results, use get_random_bytes().
  */
 void prandom_bytes_state(struct rnd_state *state, void *buf, size_t bytes)
 {
index d9d1c33..848e7eb 100644 (file)
@@ -164,7 +164,7 @@ static int get_rcw_we(struct rs_control *rs, struct wspace *ws,
 
        /* Load c with random data and encode */
        for (i = 0; i < dlen; i++)
-               c[i] = prandom_u32() & nn;
+               c[i] = get_random_u32() & nn;
 
        memset(c + dlen, 0, nroots * sizeof(*c));
        encode_rs16(rs, c, dlen, c + dlen, 0);
@@ -178,12 +178,12 @@ static int get_rcw_we(struct rs_control *rs, struct wspace *ws,
        for (i = 0; i < errs; i++) {
                do {
                        /* Error value must be nonzero */
-                       errval = prandom_u32() & nn;
+                       errval = get_random_u32() & nn;
                } while (errval == 0);
 
                do {
                        /* Must not choose the same location twice */
-                       errloc = prandom_u32() % len;
+                       errloc = prandom_u32_max(len);
                } while (errlocs[errloc] != 0);
 
                errlocs[errloc] = 1;
@@ -194,19 +194,19 @@ static int get_rcw_we(struct rs_control *rs, struct wspace *ws,
        for (i = 0; i < eras; i++) {
                do {
                        /* Must not choose the same location twice */
-                       errloc = prandom_u32() % len;
+                       errloc = prandom_u32_max(len);
                } while (errlocs[errloc] != 0);
 
                derrlocs[i] = errloc;
 
-               if (ewsc && (prandom_u32() & 1)) {
+               if (ewsc && prandom_u32_max(2)) {
                        /* Erasure with the symbol intact */
                        errlocs[errloc] = 2;
                } else {
                        /* Erasure with corrupted symbol */
                        do {
                                /* Error value must be nonzero */
-                               errval = prandom_u32() & nn;
+                               errval = get_random_u32() & nn;
                        } while (errval == 0);
 
                        errlocs[errloc] = 1;
index a8108a9..7280ae8 100644 (file)
@@ -21,7 +21,7 @@ static int init_alloc_hint(struct sbitmap *sb, gfp_t flags)
                int i;
 
                for_each_possible_cpu(i)
-                       *per_cpu_ptr(sb->alloc_hint, i) = prandom_u32() % depth;
+                       *per_cpu_ptr(sb->alloc_hint, i) = prandom_u32_max(depth);
        }
        return 0;
 }
@@ -33,7 +33,7 @@ static inline unsigned update_alloc_hint_before_get(struct sbitmap *sb,
 
        hint = this_cpu_read(*sb->alloc_hint);
        if (unlikely(hint >= depth)) {
-               hint = depth ? prandom_u32() % depth : 0;
+               hint = depth ? prandom_u32_max(depth) : 0;
                this_cpu_write(*sb->alloc_hint, hint);
        }
 
index 437d8e6..86fadd3 100644 (file)
@@ -587,7 +587,7 @@ static int __init test_string_helpers_init(void)
        for (i = 0; i < UNESCAPE_ALL_MASK + 1; i++)
                test_string_unescape("unescape", i, false);
        test_string_unescape("unescape inplace",
-                            get_random_int() % (UNESCAPE_ANY + 1), true);
+                            prandom_u32_max(UNESCAPE_ANY + 1), true);
 
        /* Without dictionary */
        for (i = 0; i < ESCAPE_ALL_MASK + 1; i++)
index ed70637..e0381b3 100644 (file)
@@ -145,7 +145,7 @@ static unsigned long get_ftrace_location(void *func)
 static int fprobe_test_init(struct kunit *test)
 {
        do {
-               rand1 = prandom_u32();
+               rand1 = get_random_u32();
        } while (rand1 <= div_factor);
 
        target = fprobe_selftest_target;
index 5144899..0927f44 100644 (file)
@@ -149,7 +149,7 @@ static void __init test_hexdump(size_t len, int rowsize, int groupsize,
 static void __init test_hexdump_set(int rowsize, bool ascii)
 {
        size_t d = min_t(size_t, sizeof(data_b), rowsize);
-       size_t len = get_random_int() % d + 1;
+       size_t len = prandom_u32_max(d) + 1;
 
        test_hexdump(len, rowsize, 4, ascii);
        test_hexdump(len, rowsize, 2, ascii);
@@ -208,11 +208,11 @@ static void __init test_hexdump_overflow(size_t buflen, size_t len,
 static void __init test_hexdump_overflow_set(size_t buflen, bool ascii)
 {
        unsigned int i = 0;
-       int rs = (get_random_int() % 2 + 1) * 16;
+       int rs = (prandom_u32_max(2) + 1) * 16;
 
        do {
                int gs = 1 << i;
-               size_t len = get_random_int() % rs + gs;
+               size_t len = prandom_u32_max(rs) + gs;
 
                test_hexdump_overflow(buflen, rounddown(len, gs), rs, gs, ascii);
        } while (i++ < 3);
@@ -223,11 +223,11 @@ static int __init test_hexdump_init(void)
        unsigned int i;
        int rowsize;
 
-       rowsize = (get_random_int() % 2 + 1) * 16;
+       rowsize = (prandom_u32_max(2) + 1) * 16;
        for (i = 0; i < 16; i++)
                test_hexdump_set(rowsize, false);
 
-       rowsize = (get_random_int() % 2 + 1) * 16;
+       rowsize = (prandom_u32_max(2) + 1) * 16;
        for (i = 0; i < 16; i++)
                test_hexdump_set(rowsize, true);
 
index a5edc2e..eeb1d72 100644 (file)
@@ -341,7 +341,7 @@ static int kprobes_test_init(struct kunit *test)
        stacktrace_driver = kprobe_stacktrace_driver;
 
        do {
-               rand1 = prandom_u32();
+               rand1 = get_random_u32();
        } while (rand1 <= div_factor);
        return 0;
 }
index ade7a1e..19ff229 100644 (file)
@@ -71,7 +71,7 @@ static void list_sort_test(struct kunit *test)
                KUNIT_ASSERT_NOT_ERR_OR_NULL(test, el);
 
                 /* force some equivalencies */
-               el->value = prandom_u32() % (TEST_LIST_LEN / 3);
+               el->value = prandom_u32_max(TEST_LIST_LEN / 3);
                el->serial = i;
                el->poison1 = TEST_POISON1;
                el->poison2 = TEST_POISON2;
index d19c808..7b01b43 100644 (file)
@@ -83,7 +83,7 @@ static __init int test_heapify_all(bool min_heap)
        /* Test with randomly generated values. */
        heap.nr = ARRAY_SIZE(values);
        for (i = 0; i < heap.nr; i++)
-               values[i] = get_random_int();
+               values[i] = get_random_u32();
 
        min_heapify_all(&heap, &funcs);
        err += pop_verify_heap(min_heap, &heap, &funcs);
@@ -116,7 +116,7 @@ static __init int test_heap_push(bool min_heap)
 
        /* Test with randomly generated values. */
        while (heap.nr < heap.size) {
-               temp = get_random_int();
+               temp = get_random_u32();
                min_heap_push(&heap, &temp, &funcs);
        }
        err += pop_verify_heap(min_heap, &heap, &funcs);
@@ -158,7 +158,7 @@ static __init int test_heap_pop_push(bool min_heap)
 
        /* Test with randomly generated values. */
        for (i = 0; i < ARRAY_SIZE(data); i++) {
-               temp = get_random_int();
+               temp = get_random_u32();
                min_heap_pop_push(&heap, &temp, &funcs);
        }
        err += pop_verify_heap(min_heap, &heap, &funcs);
index da13793..c0c957c 100644 (file)
@@ -157,7 +157,7 @@ static int test_nodelta_obj_get(struct world *world, struct objagg *objagg,
        int err;
 
        if (should_create_root)
-               prandom_bytes(world->next_root_buf,
+               get_random_bytes(world->next_root_buf,
                              sizeof(world->next_root_buf));
 
        objagg_obj = world_obj_get(world, objagg, key_id);
index 5a1dd47..b358a74 100644 (file)
@@ -291,7 +291,7 @@ static int __init test_rhltable(unsigned int entries)
        if (WARN_ON(err))
                goto out_free;
 
-       k = prandom_u32();
+       k = get_random_u32();
        ret = 0;
        for (i = 0; i < entries; i++) {
                rhl_test_objects[i].value.id = k;
@@ -369,12 +369,12 @@ static int __init test_rhltable(unsigned int entries)
        pr_info("test %d random rhlist add/delete operations\n", entries);
        for (j = 0; j < entries; j++) {
                u32 i = prandom_u32_max(entries);
-               u32 prand = prandom_u32();
+               u32 prand = get_random_u32();
 
                cond_resched();
 
                if (prand == 0)
-                       prand = prandom_u32();
+                       prand = get_random_u32();
 
                if (prand & 1) {
                        prand >>= 1;
index 4f2f2d1..cf77805 100644 (file)
@@ -80,7 +80,7 @@ static int random_size_align_alloc_test(void)
        int i;
 
        for (i = 0; i < test_loop_count; i++) {
-               rnd = prandom_u32();
+               rnd = get_random_u8();
 
                /*
                 * Maximum 1024 pages, if PAGE_SIZE is 4096.
@@ -151,9 +151,7 @@ static int random_size_alloc_test(void)
        int i;
 
        for (i = 0; i < test_loop_count; i++) {
-               n = prandom_u32();
-               n = (n % 100) + 1;
-
+               n = prandom_u32_max(100) + 1;
                p = vmalloc(n * PAGE_SIZE);
 
                if (!p)
@@ -293,16 +291,12 @@ pcpu_alloc_test(void)
                return -1;
 
        for (i = 0; i < 35000; i++) {
-               unsigned int r;
-
-               r = prandom_u32();
-               size = (r % (PAGE_SIZE / 4)) + 1;
+               size = prandom_u32_max(PAGE_SIZE / 4) + 1;
 
                /*
                 * Maximum PAGE_SIZE
                 */
-               r = prandom_u32();
-               align = 1 << ((r % 11) + 1);
+               align = 1 << (prandom_u32_max(11) + 1);
 
                pcpu[i] = __alloc_percpu(size, align);
                if (!pcpu[i])
@@ -393,14 +387,11 @@ static struct test_driver {
 
 static void shuffle_array(int *arr, int n)
 {
-       unsigned int rnd;
        int i, j;
 
        for (i = n - 1; i > 0; i--)  {
-               rnd = prandom_u32();
-
                /* Cut the range. */
-               j = rnd % i;
+               j = prandom_u32_max(i);
 
                /* Swap indexes. */
                swap(arr[i], arr[j]);
index 562d539..e309b4c 100644 (file)
@@ -52,7 +52,7 @@ EXPORT_SYMBOL(generate_random_guid);
 
 static void __uuid_gen_common(__u8 b[16])
 {
-       prandom_bytes(b, 16);
+       get_random_bytes(b, 16);
        /* reversion 0b10 */
        b[8] = (b[8] & 0x3F) | 0x80;
 }
index 57e4c72..0d59098 100644 (file)
@@ -1299,7 +1299,7 @@ static void match_all_not_assigned(struct kunit *test)
        KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC);
 
        for (i = 0; i < 256; i++) {
-               size = (get_random_int() % 1024) + 1;
+               size = prandom_u32_max(1024) + 1;
                ptr = kmalloc(size, GFP_KERNEL);
                KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
                KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN);
@@ -1308,7 +1308,7 @@ static void match_all_not_assigned(struct kunit *test)
        }
 
        for (i = 0; i < 256; i++) {
-               order = (get_random_int() % 4) + 1;
+               order = prandom_u32_max(4) + 1;
                pages = alloc_pages(GFP_KERNEL, order);
                ptr = page_address(pages);
                KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
@@ -1321,7 +1321,7 @@ static void match_all_not_assigned(struct kunit *test)
                return;
 
        for (i = 0; i < 256; i++) {
-               size = (get_random_int() % 1024) + 1;
+               size = prandom_u32_max(1024) + 1;
                ptr = vmalloc(size);
                KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
                KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN);
index 86214d4..8280a5c 100644 (file)
@@ -2332,7 +2332,7 @@ static struct inode *shmem_get_inode(struct super_block *sb, struct inode *dir,
                inode_init_owner(&init_user_ns, inode, dir, mode);
                inode->i_blocks = 0;
                inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
-               inode->i_generation = prandom_u32();
+               inode->i_generation = get_random_u32();
                info = SHMEM_I(inode);
                memset(info, 0, (char *)inode - (char *)info);
                spin_lock_init(&info->lock);
index d1f6e2c..59c8e28 100644 (file)
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -2381,7 +2381,7 @@ static bool freelist_state_initialize(union freelist_init_state *state,
        unsigned int rand;
 
        /* Use best entropy available to define a random shift */
-       rand = get_random_int();
+       rand = get_random_u32();
 
        /* Use a random state if the pre-computed list is not available */
        if (!cachep->random_seq) {
index 96dd392..157527d 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1881,7 +1881,7 @@ static bool shuffle_freelist(struct kmem_cache *s, struct slab *slab)
                return false;
 
        freelist_count = oo_objects(s->oo);
-       pos = get_random_int() % freelist_count;
+       pos = prandom_u32_max(freelist_count);
 
        page_limit = slab->objects * s->size;
        start = fixup_red_left(s, slab_address(slab));
index f6012f8..fc9eb02 100644 (file)
@@ -407,7 +407,7 @@ static void garp_join_timer_arm(struct garp_applicant *app)
 {
        unsigned long delay;
 
-       delay = (u64)msecs_to_jiffies(garp_join_time) * prandom_u32() >> 32;
+       delay = prandom_u32_max(msecs_to_jiffies(garp_join_time));
        mod_timer(&app->join_timer, jiffies + delay);
 }
 
index 35e04cc..155f74d 100644 (file)
@@ -592,7 +592,7 @@ static void mrp_join_timer_arm(struct mrp_applicant *app)
 {
        unsigned long delay;
 
-       delay = (u64)msecs_to_jiffies(mrp_join_time) * prandom_u32() >> 32;
+       delay = prandom_u32_max(msecs_to_jiffies(mrp_join_time));
        mod_timer(&app->join_timer, jiffies + delay);
 }
 
index 6a6898e..db60217 100644 (file)
@@ -222,7 +222,7 @@ static void pick_new_mon(struct ceph_mon_client *monc)
                                max--;
                }
 
-               n = prandom_u32() % max;
+               n = prandom_u32_max(max);
                if (o >= 0 && n >= o)
                        n++;
 
index 87b883c..4e4f1e4 100644 (file)
@@ -1479,7 +1479,7 @@ static bool target_should_be_paused(struct ceph_osd_client *osdc,
 
 static int pick_random_replica(const struct ceph_osds *acting)
 {
-       int i = prandom_u32() % acting->size;
+       int i = prandom_u32_max(acting->size);
 
        dout("%s picked osd%d, primary osd%d\n", __func__,
             acting->osds[i], acting->primary);
index e93edb8..3c4786b 100644 (file)
@@ -111,7 +111,7 @@ static void neigh_cleanup_and_release(struct neighbour *neigh)
 
 unsigned long neigh_rand_reach_time(unsigned long base)
 {
-       return base ? (prandom_u32() % base) + (base >> 1) : 0;
+       return base ? prandom_u32_max(base) + (base >> 1) : 0;
 }
 EXPORT_SYMBOL(neigh_rand_reach_time);
 
index 88906ba..c376305 100644 (file)
@@ -2324,7 +2324,7 @@ static inline int f_pick(struct pktgen_dev *pkt_dev)
                                pkt_dev->curfl = 0; /*reset */
                }
        } else {
-               flow = prandom_u32() % pkt_dev->cflows;
+               flow = prandom_u32_max(pkt_dev->cflows);
                pkt_dev->curfl = flow;
 
                if (pkt_dev->flows[flow].count > pkt_dev->lflow) {
@@ -2380,10 +2380,9 @@ static void set_cur_queue_map(struct pktgen_dev *pkt_dev)
        else if (pkt_dev->queue_map_min <= pkt_dev->queue_map_max) {
                __u16 t;
                if (pkt_dev->flags & F_QUEUE_MAP_RND) {
-                       t = prandom_u32() %
-                               (pkt_dev->queue_map_max -
-                                pkt_dev->queue_map_min + 1)
-                               + pkt_dev->queue_map_min;
+                       t = prandom_u32_max(pkt_dev->queue_map_max -
+                                           pkt_dev->queue_map_min + 1) +
+                           pkt_dev->queue_map_min;
                } else {
                        t = pkt_dev->cur_queue_map + 1;
                        if (t > pkt_dev->queue_map_max)
@@ -2412,7 +2411,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
                __u32 tmp;
 
                if (pkt_dev->flags & F_MACSRC_RND)
-                       mc = prandom_u32() % pkt_dev->src_mac_count;
+                       mc = prandom_u32_max(pkt_dev->src_mac_count);
                else {
                        mc = pkt_dev->cur_src_mac_offset++;
                        if (pkt_dev->cur_src_mac_offset >=
@@ -2438,7 +2437,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
                __u32 tmp;
 
                if (pkt_dev->flags & F_MACDST_RND)
-                       mc = prandom_u32() % pkt_dev->dst_mac_count;
+                       mc = prandom_u32_max(pkt_dev->dst_mac_count);
 
                else {
                        mc = pkt_dev->cur_dst_mac_offset++;
@@ -2465,23 +2464,23 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
                for (i = 0; i < pkt_dev->nr_labels; i++)
                        if (pkt_dev->labels[i] & MPLS_STACK_BOTTOM)
                                pkt_dev->labels[i] = MPLS_STACK_BOTTOM |
-                                            ((__force __be32)prandom_u32() &
+                                            ((__force __be32)get_random_u32() &
                                                      htonl(0x000fffff));
        }
 
        if ((pkt_dev->flags & F_VID_RND) && (pkt_dev->vlan_id != 0xffff)) {
-               pkt_dev->vlan_id = prandom_u32() & (4096 - 1);
+               pkt_dev->vlan_id = prandom_u32_max(4096);
        }
 
        if ((pkt_dev->flags & F_SVID_RND) && (pkt_dev->svlan_id != 0xffff)) {
-               pkt_dev->svlan_id = prandom_u32() & (4096 - 1);
+               pkt_dev->svlan_id = prandom_u32_max(4096);
        }
 
        if (pkt_dev->udp_src_min < pkt_dev->udp_src_max) {
                if (pkt_dev->flags & F_UDPSRC_RND)
-                       pkt_dev->cur_udp_src = prandom_u32() %
-                               (pkt_dev->udp_src_max - pkt_dev->udp_src_min)
-                               pkt_dev->udp_src_min;
+                       pkt_dev->cur_udp_src = prandom_u32_max(
+                               pkt_dev->udp_src_max - pkt_dev->udp_src_min) +
+                               pkt_dev->udp_src_min;
 
                else {
                        pkt_dev->cur_udp_src++;
@@ -2492,9 +2491,9 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
 
        if (pkt_dev->udp_dst_min < pkt_dev->udp_dst_max) {
                if (pkt_dev->flags & F_UDPDST_RND) {
-                       pkt_dev->cur_udp_dst = prandom_u32() %
-                               (pkt_dev->udp_dst_max - pkt_dev->udp_dst_min)
-                               pkt_dev->udp_dst_min;
+                       pkt_dev->cur_udp_dst = prandom_u32_max(
+                               pkt_dev->udp_dst_max - pkt_dev->udp_dst_min) +
+                               pkt_dev->udp_dst_min;
                } else {
                        pkt_dev->cur_udp_dst++;
                        if (pkt_dev->cur_udp_dst >= pkt_dev->udp_dst_max)
@@ -2509,7 +2508,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
                if (imn < imx) {
                        __u32 t;
                        if (pkt_dev->flags & F_IPSRC_RND)
-                               t = prandom_u32() % (imx - imn) + imn;
+                               t = prandom_u32_max(imx - imn) + imn;
                        else {
                                t = ntohl(pkt_dev->cur_saddr);
                                t++;
@@ -2531,8 +2530,8 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
                                if (pkt_dev->flags & F_IPDST_RND) {
 
                                        do {
-                                               t = prandom_u32() %
-                                                       (imx - imn) + imn;
+                                               t = prandom_u32_max(imx - imn) +
+                                                   imn;
                                                s = htonl(t);
                                        } while (ipv4_is_loopback(s) ||
                                                ipv4_is_multicast(s) ||
@@ -2569,7 +2568,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
 
                        for (i = 0; i < 4; i++) {
                                pkt_dev->cur_in6_daddr.s6_addr32[i] =
-                                   (((__force __be32)prandom_u32() |
+                                   (((__force __be32)get_random_u32() |
                                      pkt_dev->min_in6_daddr.s6_addr32[i]) &
                                     pkt_dev->max_in6_daddr.s6_addr32[i]);
                        }
@@ -2579,9 +2578,9 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
        if (pkt_dev->min_pkt_size < pkt_dev->max_pkt_size) {
                __u32 t;
                if (pkt_dev->flags & F_TXSIZE_RND) {
-                       t = prandom_u32() %
-                               (pkt_dev->max_pkt_size - pkt_dev->min_pkt_size)
-                               + pkt_dev->min_pkt_size;
+                       t = prandom_u32_max(pkt_dev->max_pkt_size -
+                                           pkt_dev->min_pkt_size) +
+                           pkt_dev->min_pkt_size;
                } else {
                        t = pkt_dev->cur_pkt_size + 1;
                        if (t > pkt_dev->max_pkt_size)
@@ -2590,7 +2589,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
                pkt_dev->cur_pkt_size = t;
        } else if (pkt_dev->n_imix_entries > 0) {
                struct imix_pkt *entry;
-               __u32 t = prandom_u32() % IMIX_PRECISION;
+               __u32 t = prandom_u32_max(IMIX_PRECISION);
                __u8 entry_index = pkt_dev->imix_distribution[t];
 
                entry = &pkt_dev->imix_entries[entry_index];
index 1105057..75fded8 100644 (file)
@@ -123,7 +123,7 @@ int sk_stream_wait_memory(struct sock *sk, long *timeo_p)
        DEFINE_WAIT_FUNC(wait, woken_wake_function);
 
        if (sk_stream_memory_free(sk))
-               current_timeo = vm_wait = (prandom_u32() % (HZ / 5)) + 2;
+               current_timeo = vm_wait = prandom_u32_max(HZ / 5) + 2;
 
        add_wait_queue(sk_sleep(sk), &wait);
 
index 6a6e121..713b7b8 100644 (file)
@@ -144,7 +144,7 @@ int dccp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
                                                    inet->inet_daddr,
                                                    inet->inet_sport,
                                                    inet->inet_dport);
-       inet->inet_id = prandom_u32();
+       inet->inet_id = get_random_u16();
 
        err = dccp_connect(sk);
        rt = NULL;
@@ -443,7 +443,7 @@ struct sock *dccp_v4_request_recv_sock(const struct sock *sk,
        RCU_INIT_POINTER(newinet->inet_opt, rcu_dereference(ireq->ireq_opt));
        newinet->mc_index  = inet_iif(skb);
        newinet->mc_ttl    = ip_hdr(skb)->ttl;
-       newinet->inet_id   = prandom_u32();
+       newinet->inet_id   = get_random_u16();
 
        if (dst == NULL && (dst = inet_csk_route_child_sock(sk, newsk, req)) == NULL)
                goto put_and_exit;
index 405a8c2..0ee7fd2 100644 (file)
@@ -73,7 +73,7 @@ int __ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len
        reuseport_has_conns(sk, true);
        sk->sk_state = TCP_ESTABLISHED;
        sk_set_txhash(sk);
-       inet->inet_id = prandom_u32();
+       inet->inet_id = get_random_u16();
 
        sk_dst_set(sk, &rt->dst);
        err = 0;
index df0660d..81be3e0 100644 (file)
@@ -213,7 +213,7 @@ static void igmp_stop_timer(struct ip_mc_list *im)
 /* It must be called with locked im->lock */
 static void igmp_start_timer(struct ip_mc_list *im, int max_delay)
 {
-       int tv = prandom_u32() % max_delay;
+       int tv = prandom_u32_max(max_delay);
 
        im->tm_running = 1;
        if (!mod_timer(&im->timer, jiffies+tv+2))
@@ -222,7 +222,7 @@ static void igmp_start_timer(struct ip_mc_list *im, int max_delay)
 
 static void igmp_gq_start_timer(struct in_device *in_dev)
 {
-       int tv = prandom_u32() % in_dev->mr_maxdelay;
+       int tv = prandom_u32_max(in_dev->mr_maxdelay);
        unsigned long exp = jiffies + tv + 2;
 
        if (in_dev->mr_gq_running &&
@@ -236,7 +236,7 @@ static void igmp_gq_start_timer(struct in_device *in_dev)
 
 static void igmp_ifc_start_timer(struct in_device *in_dev, int delay)
 {
-       int tv = prandom_u32() % delay;
+       int tv = prandom_u32_max(delay);
 
        if (!mod_timer(&in_dev->mr_ifc_timer, jiffies+tv+2))
                in_dev_hold(in_dev);
index ebca860..4e84ed2 100644 (file)
@@ -314,7 +314,7 @@ other_half_scan:
        if (likely(remaining > 1))
                remaining &= ~1U;
 
-       offset = prandom_u32() % remaining;
+       offset = prandom_u32_max(remaining);
        /* __inet_hash_connect() favors ports having @low parity
         * We do the opposite to not pollute connect() users.
         */
index a0ad34e..d3dc281 100644 (file)
@@ -1037,7 +1037,7 @@ ok:
         * on low contention the randomness is maximal and on high contention
         * it may be inexistent.
         */
-       i = max_t(int, i, (prandom_u32() & 7) * 2);
+       i = max_t(int, i, prandom_u32_max(8) * 2);
        WRITE_ONCE(table_perturb[index], READ_ONCE(table_perturb[index]) + i + 2);
 
        /* Head lock still held and bh's disabled */
index 1ae83ad..922c87e 100644 (file)
@@ -172,7 +172,7 @@ int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk,
                 * Avoid using the hashed IP ident generator.
                 */
                if (sk->sk_protocol == IPPROTO_TCP)
-                       iph->id = (__force __be16)prandom_u32();
+                       iph->id = (__force __be16)get_random_u16();
                else
                        __ip_select_ident(net, iph, 1);
        }
index 795cbe1..cd1fa9f 100644 (file)
@@ -3664,7 +3664,7 @@ static __net_init int rt_genid_init(struct net *net)
 {
        atomic_set(&net->ipv4.rt_genid, 0);
        atomic_set(&net->fnhe_genid, 0);
-       atomic_set(&net->ipv4.dev_addr_genid, get_random_int());
+       atomic_set(&net->ipv4.dev_addr_genid, get_random_u32());
        return 0;
 }
 
@@ -3719,7 +3719,7 @@ int __init ip_rt_init(void)
 
        ip_idents = idents_hash;
 
-       prandom_bytes(ip_idents, (ip_idents_mask + 1) * sizeof(*ip_idents));
+       get_random_bytes(ip_idents, (ip_idents_mask + 1) * sizeof(*ip_idents));
 
        ip_tstamps = idents_hash + (ip_idents_mask + 1) * sizeof(*ip_idents);
 
index 112f28f..ba4d98e 100644 (file)
@@ -243,7 +243,7 @@ static bool tcp_cdg_backoff(struct sock *sk, u32 grad)
        struct cdg *ca = inet_csk_ca(sk);
        struct tcp_sock *tp = tcp_sk(sk);
 
-       if (prandom_u32() <= nexp_u32(grad * backoff_factor))
+       if (get_random_u32() <= nexp_u32(grad * backoff_factor))
                return false;
 
        if (use_ineff) {
index 6376ad9..7a250ef 100644 (file)
@@ -323,7 +323,7 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
                                                 inet->inet_daddr);
        }
 
-       inet->inet_id = prandom_u32();
+       inet->inet_id = get_random_u16();
 
        if (tcp_fastopen_defer_connect(sk, &err))
                return err;
@@ -1543,7 +1543,7 @@ struct sock *tcp_v4_syn_recv_sock(const struct sock *sk, struct sk_buff *skb,
        inet_csk(newsk)->icsk_ext_hdr_len = 0;
        if (inet_opt)
                inet_csk(newsk)->icsk_ext_hdr_len = inet_opt->opt.optlen;
-       newinet->inet_id = prandom_u32();
+       newinet->inet_id = get_random_u16();
 
        /* Set ToS of the new socket based upon the value of incoming SYN.
         * ECT bits are set later in tcp_init_transfer().
index 8126f67..662d717 100644 (file)
@@ -246,7 +246,7 @@ int udp_lib_get_port(struct sock *sk, unsigned short snum,
                inet_get_local_port_range(net, &low, &high);
                remaining = (high - low) + 1;
 
-               rand = prandom_u32();
+               rand = get_random_u32();
                first = reciprocal_scale(rand, remaining) + low;
                /*
                 * force rand to be an odd multiple of UDP_HTABLE_SIZE
index 10ce86b..417834b 100644 (file)
@@ -104,7 +104,7 @@ static inline u32 cstamp_delta(unsigned long cstamp)
 static inline s32 rfc3315_s14_backoff_init(s32 irt)
 {
        /* multiply 'initial retransmission time' by 0.9 .. 1.1 */
-       u64 tmp = (900000 + prandom_u32() % 200001) * (u64)irt;
+       u64 tmp = (900000 + prandom_u32_max(200001)) * (u64)irt;
        do_div(tmp, 1000000);
        return (s32)tmp;
 }
@@ -112,11 +112,11 @@ static inline s32 rfc3315_s14_backoff_init(s32 irt)
 static inline s32 rfc3315_s14_backoff_update(s32 rt, s32 mrt)
 {
        /* multiply 'retransmission timeout' by 1.9 .. 2.1 */
-       u64 tmp = (1900000 + prandom_u32() % 200001) * (u64)rt;
+       u64 tmp = (1900000 + prandom_u32_max(200001)) * (u64)rt;
        do_div(tmp, 1000000);
        if ((s32)tmp > mrt) {
                /* multiply 'maximum retransmission time' by 0.9 .. 1.1 */
-               tmp = (900000 + prandom_u32() % 200001) * (u64)mrt;
+               tmp = (900000 + prandom_u32_max(200001)) * (u64)mrt;
                do_div(tmp, 1000000);
        }
        return (s32)tmp;
@@ -3967,7 +3967,7 @@ static void addrconf_dad_kick(struct inet6_ifaddr *ifp)
        if (ifp->flags & IFA_F_OPTIMISTIC)
                rand_num = 0;
        else
-               rand_num = prandom_u32() % (idev->cnf.rtr_solicit_delay ? : 1);
+               rand_num = prandom_u32_max(idev->cnf.rtr_solicit_delay ?: 1);
 
        nonce = 0;
        if (idev->cnf.enhanced_dad ||
index ceb85c6..18481eb 100644 (file)
@@ -220,7 +220,7 @@ static struct ip6_flowlabel *fl_intern(struct net *net,
        spin_lock_bh(&ip6_fl_lock);
        if (label == 0) {
                for (;;) {
-                       fl->label = htonl(prandom_u32())&IPV6_FLOWLABEL_MASK;
+                       fl->label = htonl(get_random_u32())&IPV6_FLOWLABEL_MASK;
                        if (fl->label) {
                                lfl = __fl_lookup(net, fl->label);
                                if (!lfl)
index 0566ab0..7860383 100644 (file)
@@ -1050,7 +1050,7 @@ bool ipv6_chk_mcast_addr(struct net_device *dev, const struct in6_addr *group,
 /* called with mc_lock */
 static void mld_gq_start_work(struct inet6_dev *idev)
 {
-       unsigned long tv = prandom_u32() % idev->mc_maxdelay;
+       unsigned long tv = prandom_u32_max(idev->mc_maxdelay);
 
        idev->mc_gq_running = 1;
        if (!mod_delayed_work(mld_wq, &idev->mc_gq_work, tv + 2))
@@ -1068,7 +1068,7 @@ static void mld_gq_stop_work(struct inet6_dev *idev)
 /* called with mc_lock */
 static void mld_ifc_start_work(struct inet6_dev *idev, unsigned long delay)
 {
-       unsigned long tv = prandom_u32() % delay;
+       unsigned long tv = prandom_u32_max(delay);
 
        if (!mod_delayed_work(mld_wq, &idev->mc_ifc_work, tv + 2))
                in6_dev_hold(idev);
@@ -1085,7 +1085,7 @@ static void mld_ifc_stop_work(struct inet6_dev *idev)
 /* called with mc_lock */
 static void mld_dad_start_work(struct inet6_dev *idev, unsigned long delay)
 {
-       unsigned long tv = prandom_u32() % delay;
+       unsigned long tv = prandom_u32_max(delay);
 
        if (!mod_delayed_work(mld_wq, &idev->mc_dad_work, tv + 2))
                in6_dev_hold(idev);
@@ -1130,7 +1130,7 @@ static void igmp6_group_queried(struct ifmcaddr6 *ma, unsigned long resptime)
        }
 
        if (delay >= resptime)
-               delay = prandom_u32() % resptime;
+               delay = prandom_u32_max(resptime);
 
        if (!mod_delayed_work(mld_wq, &ma->mca_work, delay))
                refcount_inc(&ma->mca_refcnt);
@@ -2574,7 +2574,7 @@ static void igmp6_join_group(struct ifmcaddr6 *ma)
 
        igmp6_send(&ma->mca_addr, ma->idev->dev, ICMPV6_MGM_REPORT);
 
-       delay = prandom_u32() % unsolicited_report_interval(ma->idev);
+       delay = prandom_u32_max(unsolicited_report_interval(ma->idev));
 
        if (cancel_delayed_work(&ma->mca_work)) {
                refcount_dec(&ma->mca_refcnt);
index 2880dc7..2685c3f 100644 (file)
@@ -18,7 +18,7 @@ static u32 __ipv6_select_ident(struct net *net,
        u32 id;
 
        do {
-               id = prandom_u32();
+               id = get_random_u32();
        } while (!id);
 
        return id;
index 7f3f5f5..3d91b98 100644 (file)
@@ -2036,7 +2036,7 @@ static void __init init_sample_table(void)
 
        memset(sample_table, 0xff, sizeof(sample_table));
        for (col = 0; col < SAMPLE_COLUMNS; col++) {
-               prandom_bytes(rnd, sizeof(rnd));
+               get_random_bytes(rnd, sizeof(rnd));
                for (i = 0; i < MCS_GROUP_RATES; i++) {
                        new_idx = (i + rnd[i]) % MCS_GROUP_RATES;
                        while (sample_table[col][new_idx] != 0xff)
index 0e8c4f4..dc3cdee 100644 (file)
@@ -641,7 +641,7 @@ static void ieee80211_send_scan_probe_req(struct ieee80211_sub_if_data *sdata,
                if (flags & IEEE80211_PROBE_FLAG_RANDOM_SN) {
                        struct ieee80211_hdr *hdr = (void *)skb->data;
                        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
-                       u16 sn = get_random_u32();
+                       u16 sn = get_random_u16();
 
                        info->control.flags |= IEEE80211_TX_CTRL_NO_SEQNO;
                        hdr->seq_ctrl =
index fb67f1c..8c04bb5 100644 (file)
@@ -1308,7 +1308,7 @@ void ip_vs_random_dropentry(struct netns_ipvs *ipvs)
         * Randomly scan 1/32 of the whole table every second
         */
        for (idx = 0; idx < (ip_vs_conn_tab_size>>5); idx++) {
-               unsigned int hash = prandom_u32() & ip_vs_conn_tab_mask;
+               unsigned int hash = get_random_u32() & ip_vs_conn_tab_mask;
 
                hlist_for_each_entry_rcu(cp, &ip_vs_conn_tab[hash], c_list) {
                        if (cp->ipvs != ipvs)
index acb55d8..f2579fc 100644 (file)
@@ -71,8 +71,8 @@ static struct ip_vs_dest *ip_vs_twos_schedule(struct ip_vs_service *svc,
         * from 0 to total_weight
         */
        total_weight += 1;
-       rweight1 = prandom_u32() % total_weight;
-       rweight2 = prandom_u32() % total_weight;
+       rweight1 = prandom_u32_max(total_weight);
+       rweight2 = prandom_u32_max(total_weight);
 
        /* Pick two weighted servers */
        list_for_each_entry_rcu(dest, &svc->destinations, n_list) {
index d8e6380..18319a6 100644 (file)
@@ -468,7 +468,7 @@ find_free_id:
        if (range->flags & NF_NAT_RANGE_PROTO_OFFSET)
                off = (ntohs(*keyptr) - ntohs(range->base_proto.all));
        else
-               off = prandom_u32();
+               off = get_random_u16();
 
        attempts = range_size;
        if (attempts > max_attempts)
@@ -490,7 +490,7 @@ another_round:
        if (attempts >= range_size || attempts < 16)
                return;
        attempts /= 2;
-       off = prandom_u32();
+       off = get_random_u16();
        goto another_round;
 }
 
index 203e24a..b26c1dc 100644 (file)
@@ -34,7 +34,7 @@ statistic_mt(const struct sk_buff *skb, struct xt_action_param *par)
 
        switch (info->mode) {
        case XT_STATISTIC_MODE_RANDOM:
-               if ((prandom_u32() & 0x7FFFFFFF) < info->u.random.probability)
+               if ((get_random_u32() & 0x7FFFFFFF) < info->u.random.probability)
                        ret = !ret;
                break;
        case XT_STATISTIC_MODE_NTH:
index 868db46..ca3ebfd 100644 (file)
@@ -1033,7 +1033,7 @@ static int sample(struct datapath *dp, struct sk_buff *skb,
        actions = nla_next(sample_arg, &rem);
 
        if ((arg->probability != U32_MAX) &&
-           (!arg->probability || prandom_u32() > arg->probability)) {
+           (!arg->probability || get_random_u32() > arg->probability)) {
                if (last)
                        consume_skb(skb);
                return 0;
index d3f6db3..6ce8dd1 100644 (file)
@@ -1350,7 +1350,7 @@ static bool fanout_flow_is_huge(struct packet_sock *po, struct sk_buff *skb)
                if (READ_ONCE(history[i]) == rxhash)
                        count++;
 
-       victim = prandom_u32() % ROLLOVER_HLEN;
+       victim = prandom_u32_max(ROLLOVER_HLEN);
 
        /* Avoid dirtying the cache line if possible */
        if (READ_ONCE(history[victim]) != rxhash)
index 5b5fb4c..97a2917 100644 (file)
@@ -104,7 +104,7 @@ static int rds_add_bound(struct rds_sock *rs, const struct in6_addr *addr,
                        return -EINVAL;
                last = rover;
        } else {
-               rover = max_t(u16, prandom_u32(), 2);
+               rover = max_t(u16, get_random_u16(), 2);
                last = rover - 1;
        }
 
index abe1bcc..62d682b 100644 (file)
@@ -25,7 +25,7 @@ static struct tc_action_ops act_gact_ops;
 static int gact_net_rand(struct tcf_gact *gact)
 {
        smp_rmb(); /* coupled with smp_wmb() in tcf_gact_init() */
-       if (prandom_u32() % gact->tcfg_pval)
+       if (prandom_u32_max(gact->tcfg_pval))
                return gact->tcf_action;
        return gact->tcfg_paction;
 }
index 5ba36f7..7a25477 100644 (file)
@@ -168,7 +168,7 @@ static int tcf_sample_act(struct sk_buff *skb, const struct tc_action *a,
        psample_group = rcu_dereference_bh(s->psample_group);
 
        /* randomly sample packets according to rate */
-       if (psample_group && (prandom_u32() % s->rate == 0)) {
+       if (psample_group && (prandom_u32_max(s->rate) == 0)) {
                if (!skb_at_tc_ingress(skb)) {
                        md.in_ifindex = skb->skb_iif;
                        md.out_ifindex = skb->dev->ifindex;
index 55c6879..817cd06 100644 (file)
@@ -573,7 +573,7 @@ static bool cobalt_should_drop(struct cobalt_vars *vars,
 
        /* Simple BLUE implementation.  Lack of ECN is deliberate. */
        if (vars->p_drop)
-               drop |= (prandom_u32() < vars->p_drop);
+               drop |= (get_random_u32() < vars->p_drop);
 
        /* Overload the drop_next field as an activity timeout */
        if (!vars->count)
@@ -2092,11 +2092,11 @@ retry:
 
                WARN_ON(host_load > CAKE_QUEUES);
 
-               /* The shifted prandom_u32() is a way to apply dithering to
-                * avoid accumulating roundoff errors
+               /* The get_random_u16() is a way to apply dithering to avoid
+                * accumulating roundoff errors
                 */
                flow->deficit += (b->flow_quantum * quantum_div[host_load] +
-                                 (prandom_u32() >> 16)) >> 16;
+                                 get_random_u16()) >> 16;
                list_move_tail(&flow->flowchain, &b->old_flows);
 
                goto retry;
index 18f4273..fb00ac4 100644 (file)
@@ -171,7 +171,7 @@ static inline struct netem_skb_cb *netem_skb_cb(struct sk_buff *skb)
 static void init_crandom(struct crndstate *state, unsigned long rho)
 {
        state->rho = rho;
-       state->last = prandom_u32();
+       state->last = get_random_u32();
 }
 
 /* get_crandom - correlated random number generator
@@ -184,9 +184,9 @@ static u32 get_crandom(struct crndstate *state)
        unsigned long answer;
 
        if (!state || state->rho == 0)  /* no correlation */
-               return prandom_u32();
+               return get_random_u32();
 
-       value = prandom_u32();
+       value = get_random_u32();
        rho = (u64)state->rho + 1;
        answer = (value * ((1ull<<32) - rho) + state->last * rho) >> 32;
        state->last = answer;
@@ -200,7 +200,7 @@ static u32 get_crandom(struct crndstate *state)
 static bool loss_4state(struct netem_sched_data *q)
 {
        struct clgstate *clg = &q->clg;
-       u32 rnd = prandom_u32();
+       u32 rnd = get_random_u32();
 
        /*
         * Makes a comparison between rnd and the transition
@@ -268,15 +268,15 @@ static bool loss_gilb_ell(struct netem_sched_data *q)
 
        switch (clg->state) {
        case GOOD_STATE:
-               if (prandom_u32() < clg->a1)
+               if (get_random_u32() < clg->a1)
                        clg->state = BAD_STATE;
-               if (prandom_u32() < clg->a4)
+               if (get_random_u32() < clg->a4)
                        return true;
                break;
        case BAD_STATE:
-               if (prandom_u32() < clg->a2)
+               if (get_random_u32() < clg->a2)
                        clg->state = GOOD_STATE;
-               if (prandom_u32() > clg->a3)
+               if (get_random_u32() > clg->a3)
                        return true;
        }
 
@@ -513,8 +513,8 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch,
                        goto finish_segs;
                }
 
-               skb->data[prandom_u32() % skb_headlen(skb)] ^=
-                       1<<(prandom_u32() % 8);
+               skb->data[prandom_u32_max(skb_headlen(skb))] ^=
+                       1<<prandom_u32_max(8);
        }
 
        if (unlikely(sch->q.qlen >= sch->limit)) {
@@ -632,7 +632,7 @@ static void get_slot_next(struct netem_sched_data *q, u64 now)
 
        if (!q->slot_dist)
                next_delay = q->slot_config.min_delay +
-                               (prandom_u32() *
+                               (get_random_u32() *
                                 (q->slot_config.max_delay -
                                  q->slot_config.min_delay) >> 32);
        else
index 974038b..265c238 100644 (file)
@@ -72,7 +72,7 @@ bool pie_drop_early(struct Qdisc *sch, struct pie_params *params,
        if (vars->accu_prob >= (MAX_PROB / 2) * 17)
                return true;
 
-       prandom_bytes(&rnd, 8);
+       get_random_bytes(&rnd, 8);
        if ((rnd >> BITS_PER_BYTE) < local_prob) {
                vars->accu_prob = 0;
                return true;
index e2389fa..0366a1a 100644 (file)
@@ -379,7 +379,7 @@ static int sfb_enqueue(struct sk_buff *skb, struct Qdisc *sch,
                goto enqueue;
        }
 
-       r = prandom_u32() & SFB_MAX_PROB;
+       r = get_random_u16() & SFB_MAX_PROB;
 
        if (unlikely(r < p_min)) {
                if (unlikely(p_min > SFB_MAX_PROB / 2)) {
index 171f1a3..83628c3 100644 (file)
@@ -8319,7 +8319,7 @@ static int sctp_get_port_local(struct sock *sk, union sctp_addr *addr)
 
                inet_get_local_port_range(net, &low, &high);
                remaining = (high - low) + 1;
-               rover = prandom_u32() % remaining + low;
+               rover = prandom_u32_max(remaining) + low;
 
                do {
                        rover++;
@@ -9448,7 +9448,7 @@ void sctp_copy_sock(struct sock *newsk, struct sock *sk,
        newinet->inet_rcv_saddr = inet->inet_rcv_saddr;
        newinet->inet_dport = htons(asoc->peer.port);
        newinet->pmtudisc = inet->pmtudisc;
-       newinet->inet_id = prandom_u32();
+       newinet->inet_id = get_random_u16();
 
        newinet->uc_ttl = inet->uc_ttl;
        newinet->mc_loop = 1;
index 5f96e75..4833768 100644 (file)
@@ -130,8 +130,8 @@ gss_krb5_make_confounder(char *p, u32 conflen)
 
        /* initialize to random value */
        if (i == 0) {
-               i = prandom_u32();
-               i = (i << 32) | prandom_u32();
+               i = get_random_u32();
+               i = (i << 32) | get_random_u32();
        }
 
        switch (conflen) {
index c3c693b..f075a9f 100644 (file)
@@ -677,7 +677,7 @@ static void cache_limit_defers(void)
 
        /* Consider removing either the first or the last */
        if (cache_defer_cnt > DFR_MAX) {
-               if (prandom_u32() & 1)
+               if (prandom_u32_max(2))
                        discard = list_entry(cache_defer_list.next,
                                             struct cache_deferred_req, recent);
                else
index 71dc263..656cec2 100644 (file)
@@ -1865,7 +1865,7 @@ xprt_alloc_xid(struct rpc_xprt *xprt)
 static void
 xprt_init_xid(struct rpc_xprt *xprt)
 {
-       xprt->xid = prandom_u32();
+       xprt->xid = get_random_u32();
 }
 
 static void
index f34d542..915b990 100644 (file)
@@ -1619,7 +1619,7 @@ static int xs_get_random_port(void)
        if (max < min)
                return -EADDRINUSE;
        range = max - min + 1;
-       rand = (unsigned short) prandom_u32() % range;
+       rand = prandom_u32_max(range);
        return rand + min;
 }
 
index f1c3b8e..e902b01 100644 (file)
@@ -3010,7 +3010,7 @@ static int tipc_sk_insert(struct tipc_sock *tsk)
        struct net *net = sock_net(sk);
        struct tipc_net *tn = net_generic(net, tipc_net_id);
        u32 remaining = (TIPC_MAX_PORT - TIPC_MIN_PORT) + 1;
-       u32 portid = prandom_u32() % remaining + TIPC_MIN_PORT;
+       u32 portid = prandom_u32_max(remaining) + TIPC_MIN_PORT;
 
        while (remaining--) {
                portid++;
index 15dbb39..b3545fc 100644 (file)
@@ -1147,7 +1147,7 @@ static int unix_autobind(struct sock *sk)
        addr->name->sun_family = AF_UNIX;
        refcount_set(&addr->refcnt, 1);
 
-       ordernum = prandom_u32();
+       ordernum = get_random_u32();
        lastnum = ordernum & 0xFFFFF;
 retry:
        ordernum = (ordernum + 1) & 0xFFFFF;
index 81df34b..3d2fe77 100644 (file)
@@ -2072,7 +2072,7 @@ int xfrm_alloc_spi(struct xfrm_state *x, u32 low, u32 high)
        } else {
                u32 spi = 0;
                for (h = 0; h < high-low+1; h++) {
-                       spi = low + prandom_u32()%(high-low+1);
+                       spi = low + prandom_u32_max(high - low + 1);
                        x0 = xfrm_state_lookup(net, mark, &x->id.daddr, htonl(spi), x->id.proto, x->props.family);
                        if (x0 == NULL) {
                                newspi = htonl(spi);