From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3E91DC4167D for ; Fri, 7 Oct 2022 18:03:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229981AbiJGSDp (ORCPT ); Fri, 7 Oct 2022 14:03:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229980AbiJGSDI (ORCPT ); Fri, 7 Oct 2022 14:03:08 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C6A5108DDC; Fri, 7 Oct 2022 11:02:04 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 7FABE61747; Fri, 7 Oct 2022 18:02:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82876C4347C; Fri, 7 Oct 2022 18:01:56 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="euNgJxVq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1665165715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Oc6/1ZWlb4i/syn+rQnwKmyTrWzXgR+Sp5qDpXPBj58=; b=euNgJxVq1cTLH+PSu4x5kaDU1jWoeunaqhNAUeBuVfaIcPpI59rzVg4T1+9JNuGUdNExgP f1zdMVnZYnXRFhD5QOcswd+kRexoftkpI4LOukNnbJ1/pPDP8R4LAhscxd6h01MoUgtXFL iejlTcwWxyIuqyfxsLZ8OI/C+vckLCo= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 4d33910a (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Fri, 7 Oct 2022 18:01:55 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org, patches@lists.linux.dev Cc: "Jason A. Donenfeld" , Andreas Noever , Andrew Morton , Andy Shevchenko , Borislav Petkov , Catalin Marinas , =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , Christoph Hellwig , Christophe Leroy , Daniel Borkmann , Dave Airlie , Dave Hansen , "David S . Miller" , Eric Dumazet , Florian Westphal , Greg Kroah-Hartman , "H . Peter Anvin" , Heiko Carstens , Helge Deller , Herbert Xu , Huacai Chen , Hugh Dickins , Jakub Kicinski , "James E . J . Bottomley" , Jan Kara , Jason Gunthorpe , Jens Axboe , Johannes Berg , Jonathan Corbet , Jozsef Kadlecsik , KP Singh , Kees Cook , Marco Elver , Mauro Carvalho Chehab , Michael Ellerman , Pablo Neira Ayuso , Paolo Abeni , Peter Zijlstra , Richard Weinberger , Russell King , Theodore Ts'o , Thomas Bogendoerfer , Thomas Gleixner , Thomas Graf , Ulf Hansson , Vignesh Raghavendra , WANG Xuerui , Will Deacon , Yury Norov , dri-devel@lists.freedesktop.org, kasan-dev@googlegroups.com, kernel-janitors@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-block@vger.kernel.org, linux-crypto@vger.kernel.org, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-media@vger.kernel.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-nvme@lists.infradead.org, linux-parisc@vger.kernel.org, linux-rdma@vger.kernel.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-usb@vger.kernel.org, linux-wireless@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org, =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Chuck Lever , Jan Kara , Mika Westerberg Subject: [PATCH v4 4/6] treewide: use get_random_u32() when possible Date: Fri, 7 Oct 2022 12:01:05 -0600 Message-Id: <20221007180107.216067-5-Jason@zx2c4.com> In-Reply-To: <20221007180107.216067-1-Jason@zx2c4.com> References: <20221007180107.216067-1-Jason@zx2c4.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: kernel-janitors@vger.kernel.org The prandom_u32() function has been a deprecated inline wrapper around get_random_u32() for several releases now, and compiles down to the exact same code. Replace the deprecated wrapper with a direct call to the real function. The same also applies to get_random_int(), which is just a wrapper around get_random_u32(). Reviewed-by: Kees Cook Acked-by: Toke Høiland-Jørgensen # for sch_cake Acked-by: Chuck Lever # for nfsd Reviewed-by: Jan Kara # for ext4 Acked-by: Mika Westerberg # for thunderbolt Signed-off-by: Jason A. Donenfeld --- Documentation/networking/filter.rst | 2 +- arch/parisc/kernel/process.c | 2 +- arch/parisc/kernel/sys_parisc.c | 4 ++-- arch/s390/mm/mmap.c | 2 +- arch/x86/kernel/cpu/amd.c | 2 +- drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++--- drivers/gpu/drm/i915/selftests/i915_selftest.c | 2 +- drivers/gpu/drm/selftests/test-drm_buddy.c | 2 +- drivers/gpu/drm/selftests/test-drm_mm.c | 2 +- drivers/infiniband/hw/cxgb4/cm.c | 4 ++-- drivers/infiniband/hw/hfi1/tid_rdma.c | 2 +- drivers/infiniband/hw/mlx4/mad.c | 2 +- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 +- drivers/md/raid5-cache.c | 2 +- .../media/test-drivers/vivid/vivid-touch-cap.c | 4 ++-- drivers/misc/habanalabs/gaudi2/gaudi2.c | 2 +- drivers/mtd/nand/raw/nandsim.c | 2 +- drivers/net/bonding/bond_main.c | 2 +- drivers/net/ethernet/broadcom/cnic.c | 2 +- .../chelsio/inline_crypto/chtls/chtls_cm.c | 2 +- drivers/net/ethernet/rocker/rocker_main.c | 6 +++--- .../wireless/broadcom/brcm80211/brcmfmac/pno.c | 2 +- .../net/wireless/marvell/mwifiex/cfg80211.c | 4 ++-- .../net/wireless/microchip/wilc1000/cfg80211.c | 2 +- .../net/wireless/quantenna/qtnfmac/cfg80211.c | 2 +- drivers/net/wireless/ti/wlcore/main.c | 2 +- drivers/nvme/common/auth.c | 2 +- drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 4 ++-- drivers/target/iscsi/cxgbit/cxgbit_cm.c | 2 +- drivers/thunderbolt/xdomain.c | 2 +- drivers/video/fbdev/uvesafb.c | 2 +- fs/exfat/inode.c | 2 +- fs/ext4/ialloc.c | 2 +- fs/ext4/ioctl.c | 4 ++-- fs/ext4/mmp.c | 2 +- fs/f2fs/namei.c | 2 +- fs/fat/inode.c | 2 +- fs/nfsd/nfs4state.c | 4 ++-- fs/ntfs3/fslog.c | 6 +++--- fs/ubifs/journal.c | 2 +- fs/xfs/libxfs/xfs_ialloc.c | 2 +- fs/xfs/xfs_icache.c | 2 +- fs/xfs/xfs_log.c | 2 +- include/net/netfilter/nf_queue.h | 2 +- include/net/red.h | 2 +- include/net/sock.h | 2 +- kernel/bpf/bloom_filter.c | 2 +- kernel/bpf/core.c | 2 +- kernel/bpf/hashtab.c | 2 +- kernel/bpf/verifier.c | 2 +- kernel/kcsan/selftest.c | 2 +- lib/random32.c | 2 +- lib/reed_solomon/test_rslib.c | 6 +++--- lib/test_fprobe.c | 2 +- lib/test_kprobes.c | 2 +- lib/test_min_heap.c | 6 +++--- lib/test_rhashtable.c | 6 +++--- mm/shmem.c | 2 +- mm/slab.c | 2 +- net/802/garp.c | 2 +- net/802/mrp.c | 2 +- net/core/pktgen.c | 4 ++-- net/ipv4/route.c | 2 +- net/ipv4/tcp_cdg.c | 2 +- net/ipv4/udp.c | 2 +- net/ipv6/ip6_flowlabel.c | 2 +- net/ipv6/output_core.c | 2 +- net/netfilter/ipvs/ip_vs_conn.c | 2 +- net/netfilter/xt_statistic.c | 2 +- net/openvswitch/actions.c | 2 +- net/rds/bind.c | 2 +- net/sched/sch_cake.c | 2 +- net/sched/sch_netem.c | 18 +++++++++--------- net/sunrpc/auth_gss/gss_krb5_wrap.c | 4 ++-- net/sunrpc/xprt.c | 2 +- net/unix/af_unix.c | 2 +- 76 files changed, 105 insertions(+), 105 deletions(-) diff --git a/Documentation/networking/filter.rst b/Documentation/networking/filter.rst index 43cdc4d34745..f69da5074860 100644 --- a/Documentation/networking/filter.rst +++ b/Documentation/networking/filter.rst @@ -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 '#'. diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 7c37e09c92da..18c4f0e3e906 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -288,7 +288,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) diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c index 2b34294517a1..848b0702005d 100644 --- a/arch/parisc/kernel/sys_parisc.c +++ b/arch/parisc/kernel/sys_parisc.c @@ -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) diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c index 5980ce348832..3327c47bc181 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c @@ -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) diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 48276c0e479d..860b60273df3 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -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)) diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index 329ff75b80b9..7bd1861ddbdf 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -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); diff --git a/drivers/gpu/drm/i915/selftests/i915_selftest.c b/drivers/gpu/drm/i915/selftests/i915_selftest.c index c4e932368b37..39da0fb0d6d2 100644 --- a/drivers/gpu/drm/i915/selftests/i915_selftest.c +++ b/drivers/gpu/drm/i915/selftests/i915_selftest.c @@ -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 ? diff --git a/drivers/gpu/drm/selftests/test-drm_buddy.c b/drivers/gpu/drm/selftests/test-drm_buddy.c index aca0c491040f..6340a711773f 100644 --- a/drivers/gpu/drm/selftests/test-drm_buddy.c +++ b/drivers/gpu/drm/selftests/test-drm_buddy.c @@ -974,7 +974,7 @@ static int __init test_drm_buddy_init(void) int err; while (!random_seed) - random_seed = get_random_int(); + random_seed = get_random_u32(); pr_info("Testing DRM buddy manager (struct drm_buddy), with random_seed=0x%x\n", random_seed); diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c index b768b53c4aee..1dc41d73d17e 100644 --- a/drivers/gpu/drm/selftests/test-drm_mm.c +++ b/drivers/gpu/drm/selftests/test-drm_mm.c @@ -2463,7 +2463,7 @@ static int __init test_drm_mm_init(void) int err; while (!random_seed) - random_seed = get_random_int(); + random_seed = get_random_u32(); pr_info("Testing DRM range manager (struct drm_mm), with random_seed=0x%x max_iterations=%u max_prime=%u\n", random_seed, max_iterations, max_prime); diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c index 14392c942f49..499a425a3379 100644 --- a/drivers/infiniband/hw/cxgb4/cm.c +++ b/drivers/infiniband/hw/cxgb4/cm.c @@ -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)); diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c index 2a7abf7a1f7f..18b05ffb415a 100644 --- a/drivers/infiniband/hw/hfi1/tid_rdma.c +++ b/drivers/infiniband/hw/hfi1/tid_rdma.c @@ -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); } } diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c index d13ecbdd4391..a37cfac5e23f 100644 --- a/drivers/infiniband/hw/mlx4/mad.c +++ b/drivers/infiniband/hw/mlx4/mad.c @@ -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) diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c index fd9d7f2c4d64..a605cf66b83e 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -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; diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c index f4e1cc1ece43..5b0fc783bf01 100644 --- a/drivers/md/raid5-cache.c +++ b/drivers/md/raid5-cache.c @@ -2993,7 +2993,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); /* diff --git a/drivers/media/test-drivers/vivid/vivid-touch-cap.c b/drivers/media/test-drivers/vivid/vivid-touch-cap.c index 792660a85bc1..6cc32eb54f9d 100644 --- a/drivers/media/test-drivers/vivid/vivid-touch-cap.c +++ b/drivers/media/test-drivers/vivid/vivid-touch-cap.c @@ -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; @@ -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) { diff --git a/drivers/misc/habanalabs/gaudi2/gaudi2.c b/drivers/misc/habanalabs/gaudi2/gaudi2.c index 98336a1a84b0..413b284bf224 100644 --- a/drivers/misc/habanalabs/gaudi2/gaudi2.c +++ b/drivers/misc/habanalabs/gaudi2/gaudi2.c @@ -2917,7 +2917,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; } diff --git a/drivers/mtd/nand/raw/nandsim.c b/drivers/mtd/nand/raw/nandsim.c index 50bcf745e816..4bdaf4aa7007 100644 --- a/drivers/mtd/nand/raw/nandsim.c +++ b/drivers/mtd/nand/raw/nandsim.c @@ -1402,7 +1402,7 @@ 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_u32() < (1 << 22)) { int flips = 1; if (bitflips > 1) flips = prandom_u32_max(bitflips) + 1; diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 86d42306aa5e..c8543394a3bb 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -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); diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c index f597b313acaa..2198e35d9e18 100644 --- a/drivers/net/ethernet/broadcom/cnic.c +++ b/drivers/net/ethernet/broadcom/cnic.c @@ -4164,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; } diff --git a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c index ac452a0111a9..b71ce6c5b512 100644 --- a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c +++ b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c @@ -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); diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c index fc83ec23bd1d..8c3bbafabb07 100644 --- a/drivers/net/ethernet/rocker/rocker_main.c +++ b/drivers/net/ethernet/rocker/rocker_main.c @@ -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) { diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c index fabfbb0b40b0..374e1cc07a63 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c @@ -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_u32() & ~(mac_mask[i]); } /* Clear multi bit */ pfn_mac.mac[0] &= 0xFE; diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c index 134114ac1ac0..4fbb5c876b12 100644 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c @@ -238,7 +238,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, @@ -302,7 +302,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; diff --git a/drivers/net/wireless/microchip/wilc1000/cfg80211.c b/drivers/net/wireless/microchip/wilc1000/cfg80211.c index 3ac373d29d93..84b9d3454e57 100644 --- a/drivers/net/wireless/microchip/wilc1000/cfg80211.c +++ b/drivers/net/wireless/microchip/wilc1000/cfg80211.c @@ -1159,7 +1159,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; diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c index 1593e810b3ca..9c5416141d3c 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c +++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c @@ -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; diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c index 3e3922d4c788..28c0f06e311f 100644 --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c @@ -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 */ diff --git a/drivers/nvme/common/auth.c b/drivers/nvme/common/auth.c index 04bd28f17dcc..d90e4f0c08b7 100644 --- a/drivers/nvme/common/auth.c +++ b/drivers/nvme/common/auth.c @@ -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) diff --git a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c index 53d91bf9c12a..c07d2e3b4bcf 100644 --- a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c +++ b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c @@ -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, diff --git a/drivers/target/iscsi/cxgbit/cxgbit_cm.c b/drivers/target/iscsi/cxgbit/cxgbit_cm.c index 3336d2b78bf7..d9204c590d9a 100644 --- a/drivers/target/iscsi/cxgbit/cxgbit_cm.c +++ b/drivers/target/iscsi/cxgbit/cxgbit_cm.c @@ -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; diff --git a/drivers/thunderbolt/xdomain.c b/drivers/thunderbolt/xdomain.c index c31c0d94d8b3..76075e29696c 100644 --- a/drivers/thunderbolt/xdomain.c +++ b/drivers/thunderbolt/xdomain.c @@ -2438,7 +2438,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; } diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c index 4df6772802d7..285b83c20326 100644 --- a/drivers/video/fbdev/uvesafb.c +++ b/drivers/video/fbdev/uvesafb.c @@ -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)); diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c index a795437b86d0..5590a1e83126 100644 --- a/fs/exfat/inode.c +++ b/fs/exfat/inode.c @@ -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; diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 36d5bc595cc2..3956e24fa6e9 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c @@ -1279,7 +1279,7 @@ struct inode *__ext4_new_inode(struct user_namespace *mnt_userns, 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)) { diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 3cf3ec4b1c21..99df5b8ae149 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -453,8 +453,8 @@ static long swap_inode_boot_loader(struct super_block *sb, inode->i_ctime = inode_bl->i_ctime = current_time(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); diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c index 9af68a7ecdcf..588cb09c5291 100644 --- a/fs/ext4/mmp.c +++ b/fs/ext4/mmp.c @@ -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; diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index bf00d5057abb..939536982c3e 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c @@ -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; diff --git a/fs/fat/inode.c b/fs/fat/inode.c index a38238d75c08..1cbcc4608dc7 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -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; diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index c5d199d7e6b4..e10c16cd7881 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -4346,8 +4346,8 @@ void 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++; diff --git a/fs/ntfs3/fslog.c b/fs/ntfs3/fslog.c index e7c494005122..0d611a6c5511 100644 --- a/fs/ntfs3/fslog.c +++ b/fs/ntfs3/fslog.c @@ -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 @@ int log_replay(struct ntfs_inode *ni, bool *initialized) /* 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 @@ int log_replay(struct ntfs_inode *ni, bool *initialized) 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); diff --git a/fs/ubifs/journal.c b/fs/ubifs/journal.c index 75dab0ae3939..4619652046cf 100644 --- a/fs/ubifs/journal.c +++ b/fs/ubifs/journal.c @@ -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; } diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c index 7838b31126e2..94db50eb706a 100644 --- a/fs/xfs/libxfs/xfs_ialloc.c +++ b/fs/xfs/libxfs/xfs_ialloc.c @@ -805,7 +805,7 @@ xfs_ialloc_ag_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; diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c index 2bbe7916a998..eae7427062cf 100644 --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c @@ -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; diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index 386b0307aed8..ad8652cbf245 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c @@ -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; diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h index 980daa6e1e3a..c81021ab07aa 100644 --- a/include/net/netfilter/nf_queue.h +++ b/include/net/netfilter/nf_queue.h @@ -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) diff --git a/include/net/red.h b/include/net/red.h index be11dbd26492..56d0647d7356 100644 --- a/include/net/red.h +++ b/include/net/red.h @@ -364,7 +364,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, diff --git a/include/net/sock.h b/include/net/sock.h index d08cfe190a78..ca2b26686677 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -2091,7 +2091,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; } diff --git a/kernel/bpf/bloom_filter.c b/kernel/bpf/bloom_filter.c index b9ea539a5561..48ee750849f2 100644 --- a/kernel/bpf/bloom_filter.c +++ b/kernel/bpf/bloom_filter.c @@ -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; } diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index ade6b03b1d9b..f6b3486f001a 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -1211,7 +1211,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); diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c index 6c530a5e560a..1d36173598a0 100644 --- a/kernel/bpf/hashtab.c +++ b/kernel/bpf/hashtab.c @@ -546,7 +546,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); diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 3eadb14e090b..943af5abdc18 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -13317,7 +13317,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; diff --git a/kernel/kcsan/selftest.c b/kernel/kcsan/selftest.c index 75712959c84e..58b94deae5c0 100644 --- a/kernel/kcsan/selftest.c +++ b/kernel/kcsan/selftest.c @@ -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; } /* diff --git a/lib/random32.c b/lib/random32.c index d5d9029362cb..d4f19e1a69d4 100644 --- a/lib/random32.c +++ b/lib/random32.c @@ -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) { diff --git a/lib/reed_solomon/test_rslib.c b/lib/reed_solomon/test_rslib.c index 4d241bdc88aa..848e7eb5da92 100644 --- a/lib/reed_solomon/test_rslib.c +++ b/lib/reed_solomon/test_rslib.c @@ -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,7 +178,7 @@ 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 { @@ -206,7 +206,7 @@ static int get_rcw_we(struct rs_control *rs, struct wspace *ws, /* 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; diff --git a/lib/test_fprobe.c b/lib/test_fprobe.c index ed70637a2ffa..e0381b3ec410 100644 --- a/lib/test_fprobe.c +++ b/lib/test_fprobe.c @@ -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; diff --git a/lib/test_kprobes.c b/lib/test_kprobes.c index a5edc2ebc947..eeb1d728d974 100644 --- a/lib/test_kprobes.c +++ b/lib/test_kprobes.c @@ -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; } diff --git a/lib/test_min_heap.c b/lib/test_min_heap.c index d19c8080fd4d..7b01b4387cfb 100644 --- a/lib/test_min_heap.c +++ b/lib/test_min_heap.c @@ -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); diff --git a/lib/test_rhashtable.c b/lib/test_rhashtable.c index 5a1dd4736b56..b358a74ed7ed 100644 --- a/lib/test_rhashtable.c +++ b/lib/test_rhashtable.c @@ -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; diff --git a/mm/shmem.c b/mm/shmem.c index 42e5888bf84d..6f2cef73808d 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2330,7 +2330,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); diff --git a/mm/slab.c b/mm/slab.c index 10e96137b44f..36ed7182bad5 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -2380,7 +2380,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) { diff --git a/net/802/garp.c b/net/802/garp.c index f6012f8e59f0..c1bb67e25430 100644 --- a/net/802/garp.c +++ b/net/802/garp.c @@ -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 = (u64)msecs_to_jiffies(garp_join_time) * get_random_u32() >> 32; mod_timer(&app->join_timer, jiffies + delay); } diff --git a/net/802/mrp.c b/net/802/mrp.c index 35e04cc5390c..3e9fe9f5d9bf 100644 --- a/net/802/mrp.c +++ b/net/802/mrp.c @@ -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 = (u64)msecs_to_jiffies(mrp_join_time) * get_random_u32() >> 32; mod_timer(&app->join_timer, jiffies + delay); } diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 5ca4f953034c..c3763056c554 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -2464,7 +2464,7 @@ 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)); } @@ -2568,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]); } diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 795cbe1de912..1a37a07c7163 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -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; } diff --git a/net/ipv4/tcp_cdg.c b/net/ipv4/tcp_cdg.c index ddc7ba0554bd..efcd145f06db 100644 --- a/net/ipv4/tcp_cdg.c +++ b/net/ipv4/tcp_cdg.c @@ -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) { diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 560d9eadeaa5..1a5b2464548e 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -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 diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c index ceb85c67ce39..18481eb76a0a 100644 --- a/net/ipv6/ip6_flowlabel.c +++ b/net/ipv6/ip6_flowlabel.c @@ -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) diff --git a/net/ipv6/output_core.c b/net/ipv6/output_core.c index 2880dc7d9a49..2685c3f15e9d 100644 --- a/net/ipv6/output_core.c +++ b/net/ipv6/output_core.c @@ -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; diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c index fb67f1ca2495..8c04bb57dd6f 100644 --- a/net/netfilter/ipvs/ip_vs_conn.c +++ b/net/netfilter/ipvs/ip_vs_conn.c @@ -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) diff --git a/net/netfilter/xt_statistic.c b/net/netfilter/xt_statistic.c index 203e24ae472c..b26c1dcfc27b 100644 --- a/net/netfilter/xt_statistic.c +++ b/net/netfilter/xt_statistic.c @@ -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: diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 868db4669a29..ca3ebfdb3023 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -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; diff --git a/net/rds/bind.c b/net/rds/bind.c index 5b5fb4ca8d3e..052776ddcc34 100644 --- a/net/rds/bind.c +++ b/net/rds/bind.c @@ -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_u32(), 2); last = rover - 1; } diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c index 637ef1757931..48e3e05228a1 100644 --- a/net/sched/sch_cake.c +++ b/net/sched/sch_cake.c @@ -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) diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index 3ca320f1a031..88c1fa2e1d15 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -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; } @@ -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 diff --git a/net/sunrpc/auth_gss/gss_krb5_wrap.c b/net/sunrpc/auth_gss/gss_krb5_wrap.c index 5f96e75f9eec..48337687848c 100644 --- a/net/sunrpc/auth_gss/gss_krb5_wrap.c +++ b/net/sunrpc/auth_gss/gss_krb5_wrap.c @@ -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) { diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index f8fae7815649..9407007f47ae 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c @@ -1868,7 +1868,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 diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index bf338b782fc4..35bd8132113f 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -1116,7 +1116,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; -- 2.37.3 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 06596C433F5 for ; Fri, 7 Oct 2022 19:16:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=CpFEzKgfv5HeE4Y3mSr4mEQE5ot9FcpgXH1ib85V+aY=; b=wYuVDTdsIRxiSa Vx8SRN+H0IXyW8CGcYSWKrGx4BGEovo/3ZqURfIdx2Y/zoLACH9d+we1ZUviGeIX00qpoDX6Vo96A bbGrZlm4JqvJr+PXpZAw3PqAQ1eh0lDmvweQsHtKmMn9EpCjTuMCEgtf7jUg/U2m/yhK8juiYoarI 6Iu6JwMloe1pUuBwlhpKlt9gO17BcqAPaUh3PoTYyh8VH18aeQWlblbuSY36a5R3n2NZf15SYeenO insW0nvA3M9y1cZYiDAwEyNHxJd0xAC+UC4nKIzePQ3Tnq6YyKtXnTamaYng0alEvcqh5/FxfT+cC tW5/gzAcPs9xjhzLZbPw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ogsp9-00ACHa-Dj; Fri, 07 Oct 2022 19:15:55 +0000 Received: from ams.source.kernel.org ([2604:1380:4601:e00::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ogrfi-00A0eH-1w; Fri, 07 Oct 2022 18:02:19 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 392C3B8207A; Fri, 7 Oct 2022 18:02:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82876C4347C; Fri, 7 Oct 2022 18:01:56 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="euNgJxVq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1665165715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Oc6/1ZWlb4i/syn+rQnwKmyTrWzXgR+Sp5qDpXPBj58=; b=euNgJxVq1cTLH+PSu4x5kaDU1jWoeunaqhNAUeBuVfaIcPpI59rzVg4T1+9JNuGUdNExgP f1zdMVnZYnXRFhD5QOcswd+kRexoftkpI4LOukNnbJ1/pPDP8R4LAhscxd6h01MoUgtXFL iejlTcwWxyIuqyfxsLZ8OI/C+vckLCo= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 4d33910a (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Fri, 7 Oct 2022 18:01:55 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org, patches@lists.linux.dev Cc: "Jason A. Donenfeld" , Andreas Noever , Andrew Morton , Andy Shevchenko , Borislav Petkov , Catalin Marinas , =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , Christoph Hellwig , Christophe Leroy , Daniel Borkmann , Dave Airlie , Dave Hansen , "David S . Miller" , Eric Dumazet , Florian Westphal , Greg Kroah-Hartman , "H . Peter Anvin" , Heiko Carstens , Helge Deller , Herbert Xu , Huacai Chen , Hugh Dickins , Jakub Kicinski , "James E . J . Bottomley" , Jan Kara , Jason Gunthorpe , Jens Axboe , Johannes Berg , Jonathan Corbet , Jozsef Kadlecsik , KP Singh , Kees Cook , Marco Elver , Mauro Carvalho Chehab , Michael Ellerman , Pablo Neira Ayuso , Paolo Abeni , Peter Zijlstra , Richard Weinberger , Russell King , Theodore Ts'o , Thomas Bogendoerfer , Thomas Gleixner , Thomas Graf , Ulf Hansson , Vignesh Raghavendra , WANG Xuerui , Will Deacon , Yury Norov , dri-devel@lists.freedesktop.org, kasan-dev@googlegroups.com, kernel-janitors@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-block@vger.kernel.org, linux-crypto@vger.kernel.org, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-media@vger.kernel.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-nvme@lists.infradead.org, linux-parisc@vger.kernel.org, linux-rdma@vger.kernel.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-usb@vger.kernel.org, linux-wireless@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org, =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Chuck Lever , Jan Kara , Mika Westerberg Subject: [PATCH v4 4/6] treewide: use get_random_u32() when possible Date: Fri, 7 Oct 2022 12:01:05 -0600 Message-Id: <20221007180107.216067-5-Jason@zx2c4.com> In-Reply-To: <20221007180107.216067-1-Jason@zx2c4.com> References: <20221007180107.216067-1-Jason@zx2c4.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221007_110206_648738_36B3BFF9 X-CRM114-Status: GOOD ( 21.98 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org VGhlIHByYW5kb21fdTMyKCkgZnVuY3Rpb24gaGFzIGJlZW4gYSBkZXByZWNhdGVkIGlubGluZSB3 cmFwcGVyIGFyb3VuZApnZXRfcmFuZG9tX3UzMigpIGZvciBzZXZlcmFsIHJlbGVhc2VzIG5vdywg YW5kIGNvbXBpbGVzIGRvd24gdG8gdGhlCmV4YWN0IHNhbWUgY29kZS4gUmVwbGFjZSB0aGUgZGVw cmVjYXRlZCB3cmFwcGVyIHdpdGggYSBkaXJlY3QgY2FsbCB0bwp0aGUgcmVhbCBmdW5jdGlvbi4g VGhlIHNhbWUgYWxzbyBhcHBsaWVzIHRvIGdldF9yYW5kb21faW50KCksIHdoaWNoIGlzCmp1c3Qg YSB3cmFwcGVyIGFyb3VuZCBnZXRfcmFuZG9tX3UzMigpLgoKUmV2aWV3ZWQtYnk6IEtlZXMgQ29v ayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPgpBY2tlZC1ieTogVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vu c2VuIDx0b2tlQHRva2UuZGs+ICMgZm9yIHNjaF9jYWtlCkFja2VkLWJ5OiBDaHVjayBMZXZlciA8 Y2h1Y2subGV2ZXJAb3JhY2xlLmNvbT4gIyBmb3IgbmZzZApSZXZpZXdlZC1ieTogSmFuIEthcmEg PGphY2tAc3VzZS5jej4gIyBmb3IgZXh0NApBY2tlZC1ieTogTWlrYSBXZXN0ZXJiZXJnIDxtaWth Lndlc3RlcmJlcmdAbGludXguaW50ZWwuY29tPiAjIGZvciB0aHVuZGVyYm9sdApTaWduZWQtb2Zm LWJ5OiBKYXNvbiBBLiBEb25lbmZlbGQgPEphc29uQHp4MmM0LmNvbT4KLS0tCiBEb2N1bWVudGF0 aW9uL25ldHdvcmtpbmcvZmlsdGVyLnJzdCAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvcGFyaXNj L2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC9wYXJpc2Mv a2VybmVsL3N5c19wYXJpc2MuYyAgICAgICAgICAgICAgICB8ICA0ICsrLS0KIGFyY2gvczM5MC9t bS9tbWFwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC94ODYva2Vy bmVsL2NwdS9hbWQuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgICAgIHwgIDYgKysrLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jIHwgIDIgKy0KIGRyaXZlcnMvZ3B1 L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fYnVkZHkuYyAgICAgfCAgMiArLQogZHJpdmVycy9ncHUv ZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9tbS5jICAgICAgICB8ICAyICstCiBkcml2ZXJzL2luZmlu aWJhbmQvaHcvY3hnYjQvY20uYyAgICAgICAgICAgICAgIHwgIDQgKystLQogZHJpdmVycy9pbmZp bmliYW5kL2h3L2hmaTEvdGlkX3JkbWEuYyAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2luZmlu aWJhbmQvaHcvbWx4NC9tYWQuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvaW5maW5p YmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYyAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9yYWlk NS1jYWNoZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vbWVkaWEvdGVzdC1k cml2ZXJzL3ZpdmlkL3ZpdmlkLXRvdWNoLWNhcC5jIHwgIDQgKystLQogZHJpdmVycy9taXNjL2hh YmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jICAgICAgICB8ICAyICstCiBkcml2ZXJzL210ZC9uYW5k L3Jhdy9uYW5kc2ltLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbmV0L2JvbmRp bmcvYm9uZF9tYWluLmMgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9uZXQvZXRoZXJu ZXQvYnJvYWRjb20vY25pYy5jICAgICAgICAgICB8ICAyICstCiAuLi4vY2hlbHNpby9pbmxpbmVf Y3J5cHRvL2NodGxzL2NodGxzX2NtLmMgICAgIHwgIDIgKy0KIGRyaXZlcnMvbmV0L2V0aGVybmV0 L3JvY2tlci9yb2NrZXJfbWFpbi5jICAgICAgfCAgNiArKystLS0KIC4uLi93aXJlbGVzcy9icm9h ZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcG5vLmMgfCAgMiArLQogLi4uL25ldC93aXJlbGVzcy9t YXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYyAgICB8ICA0ICsrLS0KIC4uLi9uZXQvd2lyZWxlc3Mv bWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMgfCAgMiArLQogLi4uL25ldC93aXJlbGVzcy9x dWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jICB8ICAyICstCiBkcml2ZXJzL25ldC93aXJlbGVz cy90aS93bGNvcmUvbWFpbi5jICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbnZtZS9jb21tb24v YXV0aC5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9zY3NpL2N4Z2JpL2N4 Z2I0aS9jeGdiNGkuYyAgICAgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvdGFyZ2V0L2lzY3Np L2N4Z2JpdC9jeGdiaXRfY20uYyAgICAgICAgfCAgMiArLQogZHJpdmVycy90aHVuZGVyYm9sdC94 ZG9tYWluLmMgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL3ZpZGVvL2ZiZGV2L3V2 ZXNhZmIuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL2V4ZmF0L2lub2RlLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZXh0NC9pYWxsb2MuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leHQ0L2lvY3RsLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQogZnMvZXh0NC9tbXAuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9mMmZzL25hbWVpLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL2ZhdC9pbm9kZS5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvbmZzZC9uZnM0c3RhdGUuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KIGZzL250ZnMzL2ZzbG9nLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KIGZzL3ViaWZzL2pvdXJuYWwuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMveGZzL2xpYnhmcy94ZnNfaWFsbG9j LmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy94ZnMveGZzX2ljYWNoZS5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL3hmcy94ZnNfbG9nLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3F1 ZXVlLmggICAgICAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL25ldC9yZWQuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGluY2x1ZGUvbmV0L3NvY2suaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQoga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYyAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBrZXJuZWwvYnBmL2NvcmUuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIGtlcm5lbC9icGYvaGFzaHRhYi5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQoga2VybmVsL2JwZi92ZXJpZmllci5jICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBrZXJuZWwva2NzYW4vc2VsZnRlc3QuYyAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi9yYW5kb20zMi5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMiArLQogbGliL3JlZWRfc29sb21vbi90ZXN0X3JzbGliLmMgICAgICAg ICAgICAgICAgICB8ICA2ICsrKy0tLQogbGliL3Rlc3RfZnByb2JlLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBsaWIvdGVzdF9rcHJvYmVzLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi90ZXN0X21pbl9oZWFwLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNiArKystLS0KIGxpYi90ZXN0X3JoYXNodGFibGUuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgNiArKystLS0KIG1tL3NobWVtLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQogbW0vc2xhYi5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvODAyL2dhcnAuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC84MDIvbXJwLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2NvcmUvcGt0Z2VuLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICA0ICsrLS0KIG5ldC9pcHY0L3JvdXRlLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2lwdjQvdGNwX2NkZy5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBuZXQvaXB2NC91ZHAuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgMiArLQogbmV0L2lwdjYvb3V0cHV0X2NvcmUuYyAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jICAgICAg ICAgICAgICAgIHwgIDIgKy0KIG5ldC9uZXRmaWx0ZXIveHRfc3RhdGlzdGljLmMgICAgICAgICAg ICAgICAgICAgfCAgMiArLQogbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyAgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBuZXQvcmRzL2JpbmQuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIG5ldC9zY2hlZC9zY2hfY2FrZS5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogbmV0L3NjaGVkL3NjaF9uZXRlbS5jICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQogbmV0L3N1bnJwYy9hdXRoX2dzcy9nc3Nfa3Ji NV93cmFwLmMgICAgICAgICAgICB8ICA0ICsrLS0KIG5ldC9zdW5ycGMveHBydC5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L3VuaXgvYWZfdW5peC5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAyICstCiA3NiBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0 aW9ucygrKSwgMTA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0 d29ya2luZy9maWx0ZXIucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci5yc3QK aW5kZXggNDNjZGM0ZDM0NzQ1Li5mNjlkYTUwNzQ4NjAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRp b24vbmV0d29ya2luZy9maWx0ZXIucnN0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9m aWx0ZXIucnN0CkBAIC0zMDUsNyArMzA1LDcgQEAgUG9zc2libGUgQlBGIGV4dGVuc2lvbnMgYXJl IHNob3duIGluIHRoZSBmb2xsb3dpbmcgdGFibGU6CiAgIHZsYW5fdGNpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2tiX3ZsYW5fdGFnX2dldChza2IpCiAgIHZsYW5fYXZhaWwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKQogICB2bGFuX3Rw aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrYi0+dmxhbl9wcm90bwotICByYW5kICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByYW5kb21fdTMyKCkKKyAgcmFuZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfcmFuZG9tX3UzMigpCiAgID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogCiBUaGVzZSBleHRlbnNpb25zIGNhbiBhbHNvIGJlIHBy ZWZpeGVkIHdpdGggJyMnLgpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2Mva2VybmVsL3Byb2Nlc3Mu YyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9wcm9jZXNzLmMKaW5kZXggN2MzN2UwOWM5MmRhLi4xOGM0 ZjBlM2U5MDYgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL2tlcm5lbC9wcm9jZXNzLmMKKysrIGIv YXJjaC9wYXJpc2Mva2VybmVsL3Byb2Nlc3MuYwpAQCAtMjg4LDcgKzI4OCw3IEBAIF9fZ2V0X3dj aGFuKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25n IGJya19ybmQodm9pZCkKIHsKLQlyZXR1cm4gKGdldF9yYW5kb21faW50KCkgJiBCUktfUk5EX01B U0spIDw8IFBBR0VfU0hJRlQ7CisJcmV0dXJuIChnZXRfcmFuZG9tX3UzMigpICYgQlJLX1JORF9N QVNLKSA8PCBQQUdFX1NISUZUOwogfQogCiB1bnNpZ25lZCBsb25nIGFyY2hfcmFuZG9taXplX2Jy ayhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9z eXNfcGFyaXNjLmMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzX3BhcmlzYy5jCmluZGV4IDJiMzQy OTQ1MTdhMS4uODQ4YjA3MDIwMDVkIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvc3lz X3BhcmlzYy5jCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNfcGFyaXNjLmMKQEAgLTIzOSwx NCArMjM5LDE0IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1tYXBfcm5kKHZvaWQpCiAJdW5zaWdu ZWQgbG9uZyBybmQgPSAwOwogCiAJaWYgKGN1cnJlbnQtPmZsYWdzICYgUEZfUkFORE9NSVpFKQot CQlybmQgPSBnZXRfcmFuZG9tX2ludCgpICYgTU1BUF9STkRfTUFTSzsKKwkJcm5kID0gZ2V0X3Jh bmRvbV91MzIoKSAmIE1NQVBfUk5EX01BU0s7CiAKIAlyZXR1cm4gcm5kIDw8IFBBR0VfU0hJRlQ7 CiB9CiAKIHVuc2lnbmVkIGxvbmcgYXJjaF9tbWFwX3JuZCh2b2lkKQogewotCXJldHVybiAoZ2V0 X3JhbmRvbV9pbnQoKSAmIE1NQVBfUk5EX01BU0spIDw8IFBBR0VfU0hJRlQ7CisJcmV0dXJuIChn ZXRfcmFuZG9tX3UzMigpICYgTU1BUF9STkRfTUFTSykgPDwgUEFHRV9TSElGVDsKIH0KIAogc3Rh dGljIHVuc2lnbmVkIGxvbmcgbW1hcF9sZWdhY3lfYmFzZSh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJj aC9zMzkwL21tL21tYXAuYyBiL2FyY2gvczM5MC9tbS9tbWFwLmMKaW5kZXggNTk4MGNlMzQ4ODMy Li4zMzI3YzQ3YmMxODEgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9tbS9tbWFwLmMKKysrIGIvYXJj aC9zMzkwL21tL21tYXAuYwpAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgaW5saW5lIGludCBtbWFw X2lzX2xlZ2FjeShzdHJ1Y3QgcmxpbWl0ICpybGltX3N0YWNrKQogCiB1bnNpZ25lZCBsb25nIGFy Y2hfbW1hcF9ybmQodm9pZCkKIHsKLQlyZXR1cm4gKGdldF9yYW5kb21faW50KCkgJiBNTUFQX1JO RF9NQVNLKSA8PCBQQUdFX1NISUZUOworCXJldHVybiAoZ2V0X3JhbmRvbV91MzIoKSAmIE1NQVBf Uk5EX01BU0spIDw8IFBBR0VfU0hJRlQ7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1tYXBf YmFzZV9sZWdhY3kodW5zaWduZWQgbG9uZyBybmQpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJu ZWwvY3B1L2FtZC5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9hbWQuYwppbmRleCA0ODI3NmMwZTQ3 OWQuLjg2MGI2MDI3M2RmMyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9hbWQuYwor KysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2FtZC5jCkBAIC01MDMsNyArNTAzLDcgQEAgc3RhdGlj IHZvaWQgYnNwX2luaXRfYW1kKHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIAkJdmFfYWxpZ24uZmxh Z3MgICAgPSBBTElHTl9WQV8zMiB8IEFMSUdOX1ZBXzY0OwogCiAJCS8qIEEgcmFuZG9tIHZhbHVl IHBlciBib290IGZvciBiaXQgc2xpY2UgWzEyOnVwcGVyX2JpdCkgKi8KLQkJdmFfYWxpZ24uYml0 cyA9IGdldF9yYW5kb21faW50KCkgJiB2YV9hbGlnbi5tYXNrOworCQl2YV9hbGlnbi5iaXRzID0g Z2V0X3JhbmRvbV91MzIoKSAmIHZhX2FsaWduLm1hc2s7CiAJfQogCiAJaWYgKGNwdV9oYXMoYywg WDg2X0ZFQVRVUkVfTVdBSVRYKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXgg MzI5ZmY3NWI4MGI5Li43YmQxODYxZGRiZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCkBAIC0xMzcsMTIgKzEzNywxMiBAQCBzdGF0aWMgdTY0IHJhbmRvbV9vZmZzZXQodTY0IHN0 YXJ0LCB1NjQgZW5kLCB1NjQgbGVuLCB1NjQgYWxpZ24pCiAJcmFuZ2UgPSByb3VuZF9kb3duKGVu ZCAtIGxlbiwgYWxpZ24pIC0gcm91bmRfdXAoc3RhcnQsIGFsaWduKTsKIAlpZiAocmFuZ2UpIHsK IAkJaWYgKHNpemVvZih1bnNpZ25lZCBsb25nKSA9PSBzaXplb2YodTY0KSkgewotCQkJYWRkciA9 IGdldF9yYW5kb21fbG9uZygpOworCQkJYWRkciA9IGdldF9yYW5kb21fdTY0KCk7CiAJCX0gZWxz ZSB7Ci0JCQlhZGRyID0gZ2V0X3JhbmRvbV9pbnQoKTsKKwkJCWFkZHIgPSBnZXRfcmFuZG9tX3Uz MigpOwogCQkJaWYgKHJhbmdlID4gVTMyX01BWCkgewogCQkJCWFkZHIgPDw9IDMyOwotCQkJCWFk ZHIgfD0gZ2V0X3JhbmRvbV9pbnQoKTsKKwkJCQlhZGRyIHw9IGdldF9yYW5kb21fdTMyKCk7CiAJ CQl9CiAJCX0KIAkJZGl2NjRfdTY0X3JlbShhZGRyLCByYW5nZSwgJmFkZHIpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMKaW5kZXggYzRlOTMyMzY4 YjM3Li4zOWRhMGZiMGQ2ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfc2VsZnRlc3QuYwpAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyBpbnQgX19ydW5fc2Vs ZnRlc3RzKGNvbnN0IGNoYXIgKm5hbWUsCiAJaW50IGVyciA9IDA7CiAKIAl3aGlsZSAoIWk5MTVf c2VsZnRlc3QucmFuZG9tX3NlZWQpCi0JCWk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQgPSBnZXRf cmFuZG9tX2ludCgpOworCQlpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkID0gZ2V0X3JhbmRvbV91 MzIoKTsKIAogCWk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzID0KIAkJaTkxNV9zZWxmdGVz dC50aW1lb3V0X21zID8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVz dC1kcm1fYnVkZHkuYyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fYnVkZHku YwppbmRleCBhY2EwYzQ5MTA0MGYuLjYzNDBhNzExNzczZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9idWRkeS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9z ZWxmdGVzdHMvdGVzdC1kcm1fYnVkZHkuYwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBpbnQg X19pbml0IHRlc3RfZHJtX2J1ZGR5X2luaXQodm9pZCkKIAlpbnQgZXJyOwogCiAJd2hpbGUgKCFy YW5kb21fc2VlZCkKLQkJcmFuZG9tX3NlZWQgPSBnZXRfcmFuZG9tX2ludCgpOworCQlyYW5kb21f c2VlZCA9IGdldF9yYW5kb21fdTMyKCk7CiAKIAlwcl9pbmZvKCJUZXN0aW5nIERSTSBidWRkeSBt YW5hZ2VyIChzdHJ1Y3QgZHJtX2J1ZGR5KSwgd2l0aCByYW5kb21fc2VlZD0weCV4XG4iLAogCQly YW5kb21fc2VlZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3Qt ZHJtX21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21tLmMKaW5kZXgg Yjc2OGI1M2M0YWVlLi4xZGM0MWQ3M2QxN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9z ZWxmdGVzdHMvdGVzdC1kcm1fbW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rl c3QtZHJtX21tLmMKQEAgLTI0NjMsNyArMjQ2Myw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHRlc3Rf ZHJtX21tX2luaXQodm9pZCkKIAlpbnQgZXJyOwogCiAJd2hpbGUgKCFyYW5kb21fc2VlZCkKLQkJ cmFuZG9tX3NlZWQgPSBnZXRfcmFuZG9tX2ludCgpOworCQlyYW5kb21fc2VlZCA9IGdldF9yYW5k b21fdTMyKCk7CiAKIAlwcl9pbmZvKCJUZXN0aW5nIERSTSByYW5nZSBtYW5hZ2VyIChzdHJ1Y3Qg ZHJtX21tKSwgd2l0aCByYW5kb21fc2VlZD0weCV4IG1heF9pdGVyYXRpb25zPSV1IG1heF9wcmlt ZT0ldVxuIiwKIAkJcmFuZG9tX3NlZWQsIG1heF9pdGVyYXRpb25zLCBtYXhfcHJpbWUpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0L2NtLmMgYi9kcml2ZXJzL2luZmlu aWJhbmQvaHcvY3hnYjQvY20uYwppbmRleCAxNDM5MmM5NDJmNDkuLjQ5OWE0MjVhMzM3OSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0L2NtLmMKKysrIGIvZHJpdmVycy9p bmZpbmliYW5kL2h3L2N4Z2I0L2NtLmMKQEAgLTczNCw3ICs3MzQsNyBAQCBzdGF0aWMgaW50IHNl bmRfY29ubmVjdChzdHJ1Y3QgYzRpd19lcCAqZXApCiAJCQkJICAgJmVwLT5jb20ucmVtb3RlX2Fk ZHI7CiAJaW50IHJldDsKIAllbnVtIGNoaXBfdHlwZSBhZGFwdGVyX3R5cGUgPSBlcC0+Y29tLmRl di0+cmRldi5sbGRpLmFkYXB0ZXJfdHlwZTsKLQl1MzIgaXNuID0gKHByYW5kb21fdTMyKCkgJiB+ N1VMKSAtIDE7CisJdTMyIGlzbiA9IChnZXRfcmFuZG9tX3UzMigpICYgfjdVTCkgLSAxOwogCXN0 cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7CiAJdTY0IHBhcmFtczsKIApAQCAtMjQ2OSw3ICsyNDY5 LDcgQEAgc3RhdGljIGludCBhY2NlcHRfY3Ioc3RydWN0IGM0aXdfZXAgKmVwLCBzdHJ1Y3Qgc2tf YnVmZiAqc2tiLAogCX0KIAogCWlmICghaXNfdDQoYWRhcHRlcl90eXBlKSkgewotCQl1MzIgaXNu ID0gKHByYW5kb21fdTMyKCkgJiB+N1VMKSAtIDE7CisJCXUzMiBpc24gPSAoZ2V0X3JhbmRvbV91 MzIoKSAmIH43VUwpIC0gMTsKIAogCQlza2IgPSBnZXRfc2tiKHNrYiwgcm91bmR1cChzaXplb2Yo KnJwbDUpLCAxNiksIEdGUF9LRVJORUwpOwogCQlycGw1ID0gX19za2JfcHV0X3plcm8oc2tiLCBy b3VuZHVwKHNpemVvZigqcnBsNSksIDE2KSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJh bmQvaHcvaGZpMS90aWRfcmRtYS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvdGlkX3Jk bWEuYwppbmRleCAyYTdhYmY3YTFmN2YuLjE4YjA1ZmZiNDE1YSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9pbmZpbmliYW5kL2h3L2hmaTEvdGlkX3JkbWEuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQv aHcvaGZpMS90aWRfcmRtYS5jCkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBoZmkxX2tlcm5faW5p dF9jdHh0X2dlbmVyYXRpb25zKHN0cnVjdCBoZmkxX2N0eHRkYXRhICpyY2QpCiAJaW50IGk7CiAK IAlmb3IgKGkgPSAwOyBpIDwgUlhFX05VTV9USURfRkxPV1M7IGkrKykgewotCQlyY2QtPmZsb3dz W2ldLmdlbmVyYXRpb24gPSBtYXNrX2dlbmVyYXRpb24ocHJhbmRvbV91MzIoKSk7CisJCXJjZC0+ Zmxvd3NbaV0uZ2VuZXJhdGlvbiA9IG1hc2tfZ2VuZXJhdGlvbihnZXRfcmFuZG9tX3UzMigpKTsK IAkJa2Vybl9zZXRfaHdfZmxvdyhyY2QsIEtFUk5fR0VORVJBVElPTl9SRVNFUlZFRCwgaSk7CiAJ fQogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvbWFkLmMgYi9kcml2 ZXJzL2luZmluaWJhbmQvaHcvbWx4NC9tYWQuYwppbmRleCBkMTNlY2JkZDQzOTEuLmEzN2NmYWM1 ZTIzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvbWFkLmMKKysrIGIv ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvbWFkLmMKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGlj IHZvaWQgX19wcm9wYWdhdGVfcGtleV9ldihzdHJ1Y3QgbWx4NF9pYl9kZXYgKmRldiwgaW50IHBv cnRfbnVtLAogX19iZTY0IG1seDRfaWJfZ2VuX25vZGVfZ3VpZCh2b2lkKQogewogI2RlZmluZSBO T0RFX0dVSURfSEkJKCh1NjQpICgoKHU2NClJQl9PUEVOSUJfT1VJKSA8PCA0MCkpCi0JcmV0dXJu IGNwdV90b19iZTY0KE5PREVfR1VJRF9ISSB8IHByYW5kb21fdTMyKCkpOworCXJldHVybiBjcHVf dG9fYmU2NChOT0RFX0dVSURfSEkgfCBnZXRfcmFuZG9tX3UzMigpKTsKIH0KIAogX19iZTY0IG1s eDRfaWJfZ2V0X25ld19kZW11eF90aWQoc3RydWN0IG1seDRfaWJfZGVtdXhfY3R4ICpjdHgpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMgYi9kcml2 ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMKaW5kZXggZmQ5ZDdmMmM0ZDY0Li5h NjA1Y2Y2NmI4M2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBv aWJfY20uYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMKQEAg LTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMgaW50IGlwb2liX2NtX3JlcV9oYW5kbGVyKHN0cnVjdCBp Yl9jbV9pZCAqY21faWQsCiAJCWdvdG8gZXJyX3FwOwogCX0KIAotCXBzbiA9IHByYW5kb21fdTMy KCkgJiAweGZmZmZmZjsKKwlwc24gPSBnZXRfcmFuZG9tX3UzMigpICYgMHhmZmZmZmY7CiAJcmV0 ID0gaXBvaWJfY21fbW9kaWZ5X3J4X3FwKGRldiwgY21faWQsIHAtPnFwLCBwc24pOwogCWlmIChy ZXQpCiAJCWdvdG8gZXJyX21vZGlmeTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDUtY2Fj aGUuYyBiL2RyaXZlcnMvbWQvcmFpZDUtY2FjaGUuYwppbmRleCBmNGUxY2MxZWNlNDMuLjViMGZj NzgzYmYwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5jCisrKyBiL2RyaXZl cnMvbWQvcmFpZDUtY2FjaGUuYwpAQCAtMjk5Myw3ICsyOTkzLDcgQEAgc3RhdGljIGludCByNWxf bG9hZF9sb2coc3RydWN0IHI1bF9sb2cgKmxvZykKIAl9CiBjcmVhdGU6CiAJaWYgKGNyZWF0ZV9z dXBlcikgewotCQlsb2ctPmxhc3RfY3Bfc2VxID0gcHJhbmRvbV91MzIoKTsKKwkJbG9nLT5sYXN0 X2NwX3NlcSA9IGdldF9yYW5kb21fdTMyKCk7CiAJCWNwID0gMDsKIAkJcjVsX2xvZ193cml0ZV9l bXB0eV9tZXRhX2Jsb2NrKGxvZywgY3AsIGxvZy0+bGFzdF9jcF9zZXEpOwogCQkvKgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtdG91Y2gtY2FwLmMg Yi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC10b3VjaC1jYXAuYwppbmRl eCA3OTI2NjBhODViYzEuLjZjYzMyZWI1NGY5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS90 ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtdG91Y2gtY2FwLmMKKysrIGIvZHJpdmVycy9tZWRpYS90 ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtdG91Y2gtY2FwLmMKQEAgLTIxMCw3ICsyMTAsNyBAQCBz dGF0aWMgdm9pZCB2aXZpZF9maWxsX2J1ZmZfbm9pc2UoX19zMTYgKnRjaF9idWYsIGludCBzaXpl KQogCiAJLyogRmlsbCAxMCUgb2YgdGhlIHZhbHVlcyB3aXRoaW4gcmFuZ2UgLTMgYW5kIDMsIHpl cm8gdGhlIG90aGVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLQkJdW5zaWdu ZWQgaW50IHJhbmQgPSBnZXRfcmFuZG9tX2ludCgpOworCQl1bnNpZ25lZCBpbnQgcmFuZCA9IGdl dF9yYW5kb21fdTMyKCk7CiAKIAkJaWYgKHJhbmQgJSAxMCkKIAkJCXRjaF9idWZbaV0gPSAwOwpA QCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgdml2aWRfZmlsbGJ1ZmZfdGNoKHN0cnVjdCB2aXZpZF9k ZXYgKmRldiwgc3RydWN0IHZpdmlkX2J1ZmZlciAqYnVmKQogCQlyZXR1cm47CiAKIAlpZiAodGVz dF9wYXRfaWR4ID09IDApCi0JCWRldi0+dGNoX3BhdF9yYW5kb20gPSBnZXRfcmFuZG9tX2ludCgp OworCQlkZXYtPnRjaF9wYXRfcmFuZG9tID0gZ2V0X3JhbmRvbV91MzIoKTsKIAlyYW5kID0gZGV2 LT50Y2hfcGF0X3JhbmRvbTsKIAogCXN3aXRjaCAodGVzdF9wYXR0ZXJuKSB7CmRpZmYgLS1naXQg YS9kcml2ZXJzL21pc2MvaGFiYW5hbGFicy9nYXVkaTIvZ2F1ZGkyLmMgYi9kcml2ZXJzL21pc2Mv aGFiYW5hbGFicy9nYXVkaTIvZ2F1ZGkyLmMKaW5kZXggOTgzMzZhMWE4NGIwLi40MTNiMjg0YmYy MjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYwor KysgYi9kcml2ZXJzL21pc2MvaGFiYW5hbGFicy9nYXVkaTIvZ2F1ZGkyLmMKQEAgLTI5MTcsNyAr MjkxNyw3IEBAIHN0YXRpYyB2b2lkIGdhdWRpMl91c2VyX2ludGVycnVwdF9zZXR1cChzdHJ1Y3Qg aGxfZGV2aWNlICpoZGV2KQogCiBzdGF0aWMgaW5saW5lIGludCBnYXVkaTJfZ2V0X25vbl96ZXJv X3JhbmRvbV9pbnQodm9pZCkKIHsKLQlpbnQgcmFuZCA9IGdldF9yYW5kb21faW50KCk7CisJaW50 IHJhbmQgPSBnZXRfcmFuZG9tX3UzMigpOwogCiAJcmV0dXJuIHJhbmQgPyByYW5kIDogMTsKIH0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRzaW0uYyBiL2RyaXZlcnMvbXRk L25hbmQvcmF3L25hbmRzaW0uYwppbmRleCA1MGJjZjc0NWU4MTYuLjRiZGFmNGFhNzAwNyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZHNpbS5jCisrKyBiL2RyaXZlcnMvbXRk L25hbmQvcmF3L25hbmRzaW0uYwpAQCAtMTQwMiw3ICsxNDAyLDcgQEAgc3RhdGljIGludCBuc19k b19yZWFkX2Vycm9yKHN0cnVjdCBuYW5kc2ltICpucywgaW50IG51bSkKIAogc3RhdGljIHZvaWQg bnNfZG9fYml0X2ZsaXBzKHN0cnVjdCBuYW5kc2ltICpucywgaW50IG51bSkKIHsKLQlpZiAoYml0 ZmxpcHMgJiYgcHJhbmRvbV91MzIoKSA8ICgxIDw8IDIyKSkgeworCWlmIChiaXRmbGlwcyAmJiBn ZXRfcmFuZG9tX3UzMigpIDwgKDEgPDwgMjIpKSB7CiAJCWludCBmbGlwcyA9IDE7CiAJCWlmIChi aXRmbGlwcyA+IDEpCiAJCQlmbGlwcyA9IHByYW5kb21fdTMyX21heChiaXRmbGlwcykgKyAxOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0 L2JvbmRpbmcvYm9uZF9tYWluLmMKaW5kZXggODZkNDIzMDZhYTVlLi5jODU0MzM5NGEzYmIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKKysrIGIvZHJpdmVycy9u ZXQvYm9uZGluZy9ib25kX21haW4uYwpAQCAtNDgwNiw3ICs0ODA2LDcgQEAgc3RhdGljIHUzMiBi b25kX3JyX2dlbl9zbGF2ZV9pZChzdHJ1Y3QgYm9uZGluZyAqYm9uZCkKIAogCXN3aXRjaCAocGFj a2V0c19wZXJfc2xhdmUpIHsKIAljYXNlIDA6Ci0JCXNsYXZlX2lkID0gcHJhbmRvbV91MzIoKTsK KwkJc2xhdmVfaWQgPSBnZXRfcmFuZG9tX3UzMigpOwogCQlicmVhazsKIAljYXNlIDE6CiAJCXNs YXZlX2lkID0gdGhpc19jcHVfaW5jX3JldHVybigqYm9uZC0+cnJfdHhfY291bnRlcik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9jbmljLmMgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9icm9hZGNvbS9jbmljLmMKaW5kZXggZjU5N2IzMTNhY2FhLi4yMTk4ZTM1ZDll MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2NuaWMuYworKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9jbmljLmMKQEAgLTQxNjQsNyArNDE2NCw3 IEBAIHN0YXRpYyBpbnQgY25pY19jbV9pbml0X2JueDJfaHcoc3RydWN0IGNuaWNfZGV2ICpkZXYp CiB7CiAJdTMyIHNlZWQ7CiAKLQlzZWVkID0gcHJhbmRvbV91MzIoKTsKKwlzZWVkID0gZ2V0X3Jh bmRvbV91MzIoKTsKIAljbmljX2N0eF93cihkZXYsIDQ1LCAwLCBzZWVkKTsKIAlyZXR1cm4gMDsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vaW5saW5lX2NyeXB0 by9jaHRscy9jaHRsc19jbS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9pbmxpbmVf Y3J5cHRvL2NodGxzL2NodGxzX2NtLmMKaW5kZXggYWM0NTJhMDExMWE5Li5iNzFjZTZjNWI1MTIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vaW5saW5lX2NyeXB0by9j aHRscy9jaHRsc19jbS5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vaW5saW5l X2NyeXB0by9jaHRscy9jaHRsc19jbS5jCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBzdGF0aWMgdm9p ZCBjaHRsc19wYXNzX2FjY2VwdF9ycGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlvcHQyIHw9IFdO RF9TQ0FMRV9FTl9WKFdTQ0FMRV9PSyh0cCkpOwogCXJwbDUtPm9wdDAgPSBjcHVfdG9fYmU2NChv cHQwKTsKIAlycGw1LT5vcHQyID0gY3B1X3RvX2JlMzIob3B0Mik7Ci0JcnBsNS0+aXNzID0gY3B1 X3RvX2JlMzIoKHByYW5kb21fdTMyKCkgJiB+N1VMKSAtIDEpOworCXJwbDUtPmlzcyA9IGNwdV90 b19iZTMyKChnZXRfcmFuZG9tX3UzMigpICYgfjdVTCkgLSAxKTsKIAlzZXRfd3JfdHhxKHNrYiwg Q1BMX1BSSU9SSVRZX1NFVFVQLCBjc2stPnBvcnRfaWQpOwogCXQ0X3NldF9hcnBfZXJyX2hhbmRs ZXIoc2tiLCBzaywgY2h0bHNfYWNjZXB0X3JwbF9hcnBfZmFpbHVyZSk7CiAJY3hnYjRfbDJ0X3Nl bmQoY3NrLT5lZ3Jlc3NfZGV2LCBza2IsIGNzay0+bDJ0X2VudHJ5KTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L3JvY2tlci9yb2NrZXJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvcm9ja2VyL3JvY2tlcl9tYWluLmMKaW5kZXggZmM4M2VjMjNiZDFkLi44YzNiYmFmYWJi MDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JvY2tlci9yb2NrZXJfbWFpbi5j CisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JvY2tlci9yb2NrZXJfbWFpbi5jCkBAIC0xMjks NyArMTI5LDcgQEAgc3RhdGljIGludCByb2NrZXJfcmVnX3Rlc3QoY29uc3Qgc3RydWN0IHJvY2tl ciAqcm9ja2VyKQogCXU2NCB0ZXN0X3JlZzsKIAl1NjQgcm5kOwogCi0Jcm5kID0gcHJhbmRvbV91 MzIoKTsKKwlybmQgPSBnZXRfcmFuZG9tX3UzMigpOwogCXJuZCA+Pj0gMTsKIAlyb2NrZXJfd3Jp dGUzMihyb2NrZXIsIFRFU1RfUkVHLCBybmQpOwogCXRlc3RfcmVnID0gcm9ja2VyX3JlYWQzMihy b2NrZXIsIFRFU1RfUkVHKTsKQEAgLTEzOSw5ICsxMzksOSBAQCBzdGF0aWMgaW50IHJvY2tlcl9y ZWdfdGVzdChjb25zdCBzdHJ1Y3Qgcm9ja2VyICpyb2NrZXIpCiAJCXJldHVybiAtRUlPOwogCX0K IAotCXJuZCA9IHByYW5kb21fdTMyKCk7CisJcm5kID0gZ2V0X3JhbmRvbV91MzIoKTsKIAlybmQg PDw9IDMxOwotCXJuZCB8PSBwcmFuZG9tX3UzMigpOworCXJuZCB8PSBnZXRfcmFuZG9tX3UzMigp OwogCXJvY2tlcl93cml0ZTY0KHJvY2tlciwgVEVTVF9SRUc2NCwgcm5kKTsKIAl0ZXN0X3JlZyA9 IHJvY2tlcl9yZWFkNjQocm9ja2VyLCBURVNUX1JFRzY0KTsKIAlpZiAodGVzdF9yZWcgIT0gcm5k ICogMikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgw MjExL2JyY21mbWFjL3Buby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgw MjExL2JyY21mbWFjL3Buby5jCmluZGV4IGZhYmZiYjBiNDBiMC4uMzc0ZTFjYzA3YTYzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMv cG5vLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21m bWFjL3Buby5jCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGludCBicmNtZl9wbm9fc2V0X3Jh bmRvbShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IGJyY21mX3Bub19pbmZvICpwaSkKIAlt ZW1jcHkocGZuX21hYy5tYWMsIG1hY19hZGRyLCBFVEhfQUxFTik7CiAJZm9yIChpID0gMDsgaSA8 IEVUSF9BTEVOOyBpKyspIHsKIAkJcGZuX21hYy5tYWNbaV0gJj0gbWFjX21hc2tbaV07Ci0JCXBm bl9tYWMubWFjW2ldIHw9IGdldF9yYW5kb21faW50KCkgJiB+KG1hY19tYXNrW2ldKTsKKwkJcGZu X21hYy5tYWNbaV0gfD0gZ2V0X3JhbmRvbV91MzIoKSAmIH4obWFjX21hc2tbaV0pOwogCX0KIAkv KiBDbGVhciBtdWx0aSBiaXQgKi8KIAlwZm5fbWFjLm1hY1swXSAmPSAweEZFOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYwppbmRleCAxMzQxMTRh YzFhYzAuLjRmYmI1Yzg3NmIxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFy dmVsbC9td2lmaWV4L2NmZzgwMjExLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVs bC9td2lmaWV4L2NmZzgwMjExLmMKQEAgLTIzOCw3ICsyMzgsNyBAQCBtd2lmaWV4X2NmZzgwMjEx X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwK IAl0eF9pbmZvLT5wa3RfbGVuID0gcGt0X2xlbjsKIAogCW13aWZpZXhfZm9ybV9tZ210X2ZyYW1l KHNrYiwgYnVmLCBsZW4pOwotCSpjb29raWUgPSBwcmFuZG9tX3UzMigpIHwgMTsKKwkqY29va2ll ID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7CiAKIAlpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihtZ210 LT5mcmFtZV9jb250cm9sKSkKIAkJc2tiID0gbXdpZmlleF9jbG9uZV9za2JfZm9yX3R4X3N0YXR1 cyhwcml2LApAQCAtMzAyLDcgKzMwMiw3IEBAIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2No YW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkJIGR1cmF0aW9uKTsKIAogCWlmICghcmV0 KSB7Ci0JCSpjb29raWUgPSBwcmFuZG9tX3UzMigpIHwgMTsKKwkJKmNvb2tpZSA9IGdldF9yYW5k b21fdTMyKCkgfCAxOwogCQlwcml2LT5yb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7CiAJCXByaXYt PnJvY19jZmcuY2hhbiA9ICpjaGFuOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVz cy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21p Y3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jCmluZGV4IDNhYzM3M2QyOWQ5My4uODRiOWQzNDU0 ZTU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAv Y2ZnODAyMTEuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAv Y2ZnODAyMTEuYwpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVj dCB3aXBoeSAqd2lwaHksCiAJY29uc3QgdTggKnZlbmRvcl9pZTsKIAlpbnQgcmV0ID0gMDsKIAot CSpjb29raWUgPSBwcmFuZG9tX3UzMigpOworCSpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpOwog CXByaXYtPnR4X2Nvb2tpZSA9ICpjb29raWU7CiAJbWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgw MjExX21nbXQgKilidWY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50 ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEv cXRuZm1hYy9jZmc4MDIxMS5jCmluZGV4IDE1OTNlODEwYjNjYS4uOWM1NDE2MTQxZDNjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5j CisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMK QEAgLTQ0OSw3ICs0NDksNyBAQCBxdG5mX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3Ry dWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIHsKIAlzdHJ1Y3QgcXRuZl92aWYgKnZpZiA9IHF0bmZf bmV0ZGV2X2dldF9wcml2KHdkZXYtPm5ldGRldik7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9t Z210ICptZ210X2ZyYW1lID0gKHZvaWQgKilwYXJhbXMtPmJ1ZjsKLQl1MzIgc2hvcnRfY29va2ll ID0gcHJhbmRvbV91MzIoKTsKKwl1MzIgc2hvcnRfY29va2llID0gZ2V0X3JhbmRvbV91MzIoKTsK IAl1MTYgZmxhZ3MgPSAwOwogCXUxNiBmcmVxOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3Jl L21haW4uYwppbmRleCAzZTM5MjJkNGM3ODguLjI4YzBmMDZlMzExZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYworKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy90aS93bGNvcmUvbWFpbi5jCkBAIC02MTAwLDcgKzYxMDAsNyBAQCBzdGF0aWMgaW50IHds MTI3MV9yZWdpc3Rlcl9odyhzdHJ1Y3Qgd2wxMjcxICp3bCkKIAkJCXdsMTI3MV93YXJuaW5nKCJG dXNlIG1hYyBhZGRyZXNzIGlzIHplcm8uIHVzaW5nIHJhbmRvbSBtYWMiKTsKIAkJCS8qIFVzZSBU SSBvdWkgYW5kIGEgcmFuZG9tIG5pYyAqLwogCQkJb3VpX2FkZHIgPSBXTENPUkVfVElfT1VJX0FE RFJFU1M7Ci0JCQluaWNfYWRkciA9IGdldF9yYW5kb21faW50KCk7CisJCQluaWNfYWRkciA9IGdl dF9yYW5kb21fdTMyKCk7CiAJCX0gZWxzZSB7CiAJCQlvdWlfYWRkciA9IHdsLT5mdXNlX291aV9h ZGRyOwogCQkJLyogZnVzZSBoYXMgdGhlIEJEX0FERFIsIHRoZSBXTEFOIGFkZHJlc3NlcyBhcmUg dGhlIG5leHQgdHdvICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvY29tbW9uL2F1dGguYyBi L2RyaXZlcnMvbnZtZS9jb21tb24vYXV0aC5jCmluZGV4IDA0YmQyOGYxN2RjYy4uZDkwZTRmMGMw OGI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvY29tbW9uL2F1dGguYworKysgYi9kcml2ZXJz L252bWUvY29tbW9uL2F1dGguYwpAQCAtMjMsNyArMjMsNyBAQCB1MzIgbnZtZV9hdXRoX2dldF9z ZXFudW0odm9pZCkKIAogCW11dGV4X2xvY2soJm52bWVfZGhjaGFwX211dGV4KTsKIAlpZiAoIW52 bWVfZGhjaGFwX3NlcW51bSkKLQkJbnZtZV9kaGNoYXBfc2VxbnVtID0gcHJhbmRvbV91MzIoKTsK KwkJbnZtZV9kaGNoYXBfc2VxbnVtID0gZ2V0X3JhbmRvbV91MzIoKTsKIAllbHNlIHsKIAkJbnZt ZV9kaGNoYXBfc2VxbnVtKys7CiAJCWlmICghbnZtZV9kaGNoYXBfc2VxbnVtKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zY3NpL2N4Z2JpL2N4Z2I0aS9jeGdiNGkuYyBiL2RyaXZlcnMvc2NzaS9jeGdi aS9jeGdiNGkvY3hnYjRpLmMKaW5kZXggNTNkOTFiZjljMTJhLi5jMDdkMmUzYjRiY2YgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvc2NzaS9jeGdiaS9jeGdiNGkvY3hnYjRpLmMKKysrIGIvZHJpdmVycy9z Y3NpL2N4Z2JpL2N4Z2I0aS9jeGdiNGkuYwpAQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lk IHNlbmRfYWN0X29wZW5fcmVxKHN0cnVjdCBjeGdiaV9zb2NrICpjc2ssIHN0cnVjdCBza19idWZm ICpza2IsCiAJfSBlbHNlIGlmIChpc190NShsbGRpLT5hZGFwdGVyX3R5cGUpKSB7CiAJCXN0cnVj dCBjcGxfdDVfYWN0X29wZW5fcmVxICpyZXEgPQogCQkJCShzdHJ1Y3QgY3BsX3Q1X2FjdF9vcGVu X3JlcSAqKXNrYi0+aGVhZDsKLQkJdTMyIGlzbiA9IChwcmFuZG9tX3UzMigpICYgfjdVTCkgLSAx OworCQl1MzIgaXNuID0gKGdldF9yYW5kb21fdTMyKCkgJiB+N1VMKSAtIDE7CiAKIAkJSU5JVF9U UF9XUihyZXEsIDApOwogCQlPUENPREVfVElEKHJlcSkgPSBjcHVfdG9fYmUzMihNS19PUENPREVf VElEKENQTF9BQ1RfT1BFTl9SRVEsCkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgc2Vu ZF9hY3Rfb3Blbl9yZXEoc3RydWN0IGN4Z2JpX3NvY2sgKmNzaywgc3RydWN0IHNrX2J1ZmYgKnNr YiwKIAl9IGVsc2UgewogCQlzdHJ1Y3QgY3BsX3Q2X2FjdF9vcGVuX3JlcSAqcmVxID0KIAkJCQko c3RydWN0IGNwbF90Nl9hY3Rfb3Blbl9yZXEgKilza2ItPmhlYWQ7Ci0JCXUzMiBpc24gPSAocHJh bmRvbV91MzIoKSAmIH43VUwpIC0gMTsKKwkJdTMyIGlzbiA9IChnZXRfcmFuZG9tX3UzMigpICYg fjdVTCkgLSAxOwogCiAJCUlOSVRfVFBfV1IocmVxLCAwKTsKIAkJT1BDT0RFX1RJRChyZXEpID0g Y3B1X3RvX2JlMzIoTUtfT1BDT0RFX1RJRChDUExfQUNUX09QRU5fUkVRLApkaWZmIC0tZ2l0IGEv ZHJpdmVycy90YXJnZXQvaXNjc2kvY3hnYml0L2N4Z2JpdF9jbS5jIGIvZHJpdmVycy90YXJnZXQv aXNjc2kvY3hnYml0L2N4Z2JpdF9jbS5jCmluZGV4IDMzMzZkMmI3OGJmNy4uZDkyMDRjNTkwZDlh IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC9pc2NzaS9jeGdiaXQvY3hnYml0X2NtLmMKKysr IGIvZHJpdmVycy90YXJnZXQvaXNjc2kvY3hnYml0L2N4Z2JpdF9jbS5jCkBAIC0xMjAyLDcgKzEy MDIsNyBAQCBjeGdiaXRfcGFzc19hY2NlcHRfcnBsKHN0cnVjdCBjeGdiaXRfc29jayAqY3NrLCBz dHJ1Y3QgY3BsX3Bhc3NfYWNjZXB0X3JlcSAqcmVxKQogCW9wdDIgfD0gQ09OR19DTlRSTF9WKENP TkdfQUxHX05FV1JFTk8pOwogCiAJb3B0MiB8PSBUNV9JU1NfRjsKLQlycGw1LT5pc3MgPSBjcHVf dG9fYmUzMigocHJhbmRvbV91MzIoKSAmIH43VUwpIC0gMSk7CisJcnBsNS0+aXNzID0gY3B1X3Rv X2JlMzIoKGdldF9yYW5kb21fdTMyKCkgJiB+N1VMKSAtIDEpOwogCiAJb3B0MiB8PSBUNV9PUFRf Ml9WQUxJRF9GOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYyBi L2RyaXZlcnMvdGh1bmRlcmJvbHQveGRvbWFpbi5jCmluZGV4IGMzMWMwZDk0ZDhiMy4uNzYwNzVl Mjk2OTZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYworKysgYi9k cml2ZXJzL3RodW5kZXJib2x0L3hkb21haW4uYwpAQCAtMjQzOCw3ICsyNDM4LDcgQEAgaW50IHRi X3hkb21haW5faW5pdCh2b2lkKQogCXRiX3Byb3BlcnR5X2FkZF9pbW1lZGlhdGUoeGRvbWFpbl9w cm9wZXJ0eV9kaXIsICJkZXZpY2VpZCIsIDB4MSk7CiAJdGJfcHJvcGVydHlfYWRkX2ltbWVkaWF0 ZSh4ZG9tYWluX3Byb3BlcnR5X2RpciwgImRldmljZXJ2IiwgMHg4MDAwMDEwMCk7CiAKLQl4ZG9t YWluX3Byb3BlcnR5X2Jsb2NrX2dlbiA9IHByYW5kb21fdTMyKCk7CisJeGRvbWFpbl9wcm9wZXJ0 eV9ibG9ja19nZW4gPSBnZXRfcmFuZG9tX3UzMigpOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3V2ZXNhZmIuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv dXZlc2FmYi5jCmluZGV4IDRkZjY3NzI4MDJkNy4uMjg1YjgzYzIwMzI2IDEwMDY0NAotLS0gYS9k cml2ZXJzL3ZpZGVvL2ZiZGV2L3V2ZXNhZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3V2 ZXNhZmIuYwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBpbnQgdXZlc2FmYl9leGVjKHN0cnVj dCB1dmVzYWZiX2t0YXNrICp0YXNrKQogCW1lbWNweSgmbS0+aWQsICZ1dmVzYWZiX2NuX2lkLCBz aXplb2YobS0+aWQpKTsKIAltLT5zZXEgPSBzZXE7CiAJbS0+bGVuID0gbGVuOwotCW0tPmFjayA9 IHByYW5kb21fdTMyKCk7CisJbS0+YWNrID0gZ2V0X3JhbmRvbV91MzIoKTsKIAogCS8qIHV2ZXNh ZmJfdGFzayBzdHJ1Y3R1cmUgKi8KIAltZW1jcHkobSArIDEsICZ0YXNrLT50LCBzaXplb2YodGFz ay0+dCkpOwpkaWZmIC0tZ2l0IGEvZnMvZXhmYXQvaW5vZGUuYyBiL2ZzL2V4ZmF0L2lub2RlLmMK aW5kZXggYTc5NTQzN2I4NmQwLi41NTkwYTFlODMxMjYgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZmF0L2lu b2RlLmMKKysrIGIvZnMvZXhmYXQvaW5vZGUuYwpAQCAtNTUyLDcgKzU1Miw3IEBAIHN0YXRpYyBp bnQgZXhmYXRfZmlsbF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXhmYXRfZGly X2VudHJ5ICppbmZvKQogCWlub2RlLT5pX3VpZCA9IHNiaS0+b3B0aW9ucy5mc191aWQ7CiAJaW5v ZGUtPmlfZ2lkID0gc2JpLT5vcHRpb25zLmZzX2dpZDsKIAlpbm9kZV9pbmNfaXZlcnNpb24oaW5v ZGUpOwotCWlub2RlLT5pX2dlbmVyYXRpb24gPSBwcmFuZG9tX3UzMigpOworCWlub2RlLT5pX2dl bmVyYXRpb24gPSBnZXRfcmFuZG9tX3UzMigpOwogCiAJaWYgKGluZm8tPmF0dHIgJiBBVFRSX1NV QkRJUikgeyAvKiBkaXJlY3RvcnkgKi8KIAkJaW5vZGUtPmlfZ2VuZXJhdGlvbiAmPSB+MTsKZGlm ZiAtLWdpdCBhL2ZzL2V4dDQvaWFsbG9jLmMgYi9mcy9leHQ0L2lhbGxvYy5jCmluZGV4IDM2ZDVi YzU5NWNjMi4uMzk1NmUyNGZhNmU5IDEwMDY0NAotLS0gYS9mcy9leHQ0L2lhbGxvYy5jCisrKyBi L2ZzL2V4dDQvaWFsbG9jLmMKQEAgLTEyNzksNyArMTI3OSw3IEBAIHN0cnVjdCBpbm9kZSAqX19l eHQ0X25ld19pbm9kZShzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm1udF91c2VybnMsCiAJCQkJCUVY VDRfR1JPVVBfSU5GT19JQklUTUFQX0NPUlJVUFQpOwogCQlnb3RvIG91dDsKIAl9Ci0JaW5vZGUt PmlfZ2VuZXJhdGlvbiA9IHByYW5kb21fdTMyKCk7CisJaW5vZGUtPmlfZ2VuZXJhdGlvbiA9IGdl dF9yYW5kb21fdTMyKCk7CiAKIAkvKiBQcmVjb21wdXRlIGNoZWNrc3VtIHNlZWQgZm9yIGlub2Rl IG1ldGFkYXRhICovCiAJaWYgKGV4dDRfaGFzX21ldGFkYXRhX2NzdW0oc2IpKSB7CmRpZmYgLS1n aXQgYS9mcy9leHQ0L2lvY3RsLmMgYi9mcy9leHQ0L2lvY3RsLmMKaW5kZXggM2NmM2VjNGIxYzIx Li45OWRmNWI4YWUxNDkgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW9jdGwuYworKysgYi9mcy9leHQ0 L2lvY3RsLmMKQEAgLTQ1Myw4ICs0NTMsOCBAQCBzdGF0aWMgbG9uZyBzd2FwX2lub2RlX2Jvb3Rf bG9hZGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAKIAlpbm9kZS0+aV9jdGltZSA9IGlub2Rl X2JsLT5pX2N0aW1lID0gY3VycmVudF90aW1lKGlub2RlKTsKIAotCWlub2RlLT5pX2dlbmVyYXRp b24gPSBwcmFuZG9tX3UzMigpOwotCWlub2RlX2JsLT5pX2dlbmVyYXRpb24gPSBwcmFuZG9tX3Uz MigpOworCWlub2RlLT5pX2dlbmVyYXRpb24gPSBnZXRfcmFuZG9tX3UzMigpOworCWlub2RlX2Js LT5pX2dlbmVyYXRpb24gPSBnZXRfcmFuZG9tX3UzMigpOwogCWV4dDRfcmVzZXRfaW5vZGVfc2Vl ZChpbm9kZSk7CiAJZXh0NF9yZXNldF9pbm9kZV9zZWVkKGlub2RlX2JsKTsKIApkaWZmIC0tZ2l0 IGEvZnMvZXh0NC9tbXAuYyBiL2ZzL2V4dDQvbW1wLmMKaW5kZXggOWFmNjhhN2VjZGNmLi41ODhj YjA5YzUyOTEgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvbW1wLmMKKysrIGIvZnMvZXh0NC9tbXAuYwpA QCAtMjY1LDcgKzI2NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbW1wX25ld19zZXEodm9pZCkK IAl1MzIgbmV3X3NlcTsKIAogCWRvIHsKLQkJbmV3X3NlcSA9IHByYW5kb21fdTMyKCk7CisJCW5l d19zZXEgPSBnZXRfcmFuZG9tX3UzMigpOwogCX0gd2hpbGUgKG5ld19zZXEgPiBFWFQ0X01NUF9T RVFfTUFYKTsKIAogCXJldHVybiBuZXdfc2VxOwpkaWZmIC0tZ2l0IGEvZnMvZjJmcy9uYW1laS5j IGIvZnMvZjJmcy9uYW1laS5jCmluZGV4IGJmMDBkNTA1N2FiYi4uOTM5NTM2OTgyYzNlIDEwMDY0 NAotLS0gYS9mcy9mMmZzL25hbWVpLmMKKysrIGIvZnMvZjJmcy9uYW1laS5jCkBAIC01MCw3ICs1 MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmYyZnNfbmV3X2lub2RlKHN0cnVjdCB1c2VyX25h bWVzcGFjZSAqbW50X3VzZXJucywKIAlpbm9kZS0+aV9ibG9ja3MgPSAwOwogCWlub2RlLT5pX210 aW1lID0gaW5vZGUtPmlfYXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IGN1cnJlbnRfdGltZShpbm9k ZSk7CiAJRjJGU19JKGlub2RlKS0+aV9jcnRpbWUgPSBpbm9kZS0+aV9tdGltZTsKLQlpbm9kZS0+ aV9nZW5lcmF0aW9uID0gcHJhbmRvbV91MzIoKTsKKwlpbm9kZS0+aV9nZW5lcmF0aW9uID0gZ2V0 X3JhbmRvbV91MzIoKTsKIAogCWlmIChTX0lTRElSKGlub2RlLT5pX21vZGUpKQogCQlGMkZTX0ko aW5vZGUpLT5pX2N1cnJlbnRfZGVwdGggPSAxOwpkaWZmIC0tZ2l0IGEvZnMvZmF0L2lub2RlLmMg Yi9mcy9mYXQvaW5vZGUuYwppbmRleCBhMzgyMzhkNzVjMDguLjFjYmNjNDYwOGRjNyAxMDA2NDQK LS0tIGEvZnMvZmF0L2lub2RlLmMKKysrIGIvZnMvZmF0L2lub2RlLmMKQEAgLTUyMyw3ICs1MjMs NyBAQCBpbnQgZmF0X2ZpbGxfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IG1zZG9z X2Rpcl9lbnRyeSAqZGUpCiAJaW5vZGUtPmlfdWlkID0gc2JpLT5vcHRpb25zLmZzX3VpZDsKIAlp bm9kZS0+aV9naWQgPSBzYmktPm9wdGlvbnMuZnNfZ2lkOwogCWlub2RlX2luY19pdmVyc2lvbihp bm9kZSk7Ci0JaW5vZGUtPmlfZ2VuZXJhdGlvbiA9IHByYW5kb21fdTMyKCk7CisJaW5vZGUtPmlf Z2VuZXJhdGlvbiA9IGdldF9yYW5kb21fdTMyKCk7CiAKIAlpZiAoKGRlLT5hdHRyICYgQVRUUl9E SVIpICYmICFJU19GUkVFKGRlLT5uYW1lKSkgewogCQlpbm9kZS0+aV9nZW5lcmF0aW9uICY9IH4x OwpkaWZmIC0tZ2l0IGEvZnMvbmZzZC9uZnM0c3RhdGUuYyBiL2ZzL25mc2QvbmZzNHN0YXRlLmMK aW5kZXggYzVkMTk5ZDdlNmI0Li5lMTBjMTZjZDc4ODEgMTAwNjQ0Ci0tLSBhL2ZzL25mc2QvbmZz NHN0YXRlLmMKKysrIGIvZnMvbmZzZC9uZnM0c3RhdGUuYwpAQCAtNDM0Niw4ICs0MzQ2LDggQEAg dm9pZCBuZnNkNF9pbml0X2xlYXNlc19uZXQoc3RydWN0IG5mc2RfbmV0ICpubikKIAlubi0+bmZz ZDRfZ3JhY2UgPSA5MDsKIAlubi0+c29tZWJvZHlfcmVjbGFpbWVkID0gZmFsc2U7CiAJbm4tPnRy YWNrX3JlY2xhaW1fY29tcGxldGVzID0gZmFsc2U7Ci0Jbm4tPmNsdmVyaWZpZXJfY291bnRlciA9 IHByYW5kb21fdTMyKCk7Ci0Jbm4tPmNsaWVudGlkX2Jhc2UgPSBwcmFuZG9tX3UzMigpOworCW5u LT5jbHZlcmlmaWVyX2NvdW50ZXIgPSBnZXRfcmFuZG9tX3UzMigpOworCW5uLT5jbGllbnRpZF9i YXNlID0gZ2V0X3JhbmRvbV91MzIoKTsKIAlubi0+Y2xpZW50aWRfY291bnRlciA9IG5uLT5jbGll bnRpZF9iYXNlICsgMTsKIAlubi0+czJzX2NwX2NsX2lkID0gbm4tPmNsaWVudGlkX2NvdW50ZXIr KzsKIApkaWZmIC0tZ2l0IGEvZnMvbnRmczMvZnNsb2cuYyBiL2ZzL250ZnMzL2ZzbG9nLmMKaW5k ZXggZTdjNDk0MDA1MTIyLi4wZDYxMWE2YzU1MTEgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMzL2ZzbG9n LmMKKysrIGIvZnMvbnRmczMvZnNsb2cuYwpAQCAtMzgxOSw3ICszODE5LDcgQEAgaW50IGxvZ19y ZXBsYXkoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBib29sICppbml0aWFsaXplZCkKIAkJfQogCiAJ CWxvZ19pbml0X3BnX2hkcihsb2csIHBhZ2Vfc2l6ZSwgcGFnZV9zaXplLCAxLCAxKTsKLQkJbG9n X2NyZWF0ZShsb2csIGxfc2l6ZSwgMCwgZ2V0X3JhbmRvbV9pbnQoKSwgZmFsc2UsIGZhbHNlKTsK KwkJbG9nX2NyZWF0ZShsb2csIGxfc2l6ZSwgMCwgZ2V0X3JhbmRvbV91MzIoKSwgZmFsc2UsIGZh bHNlKTsKIAogCQlsb2ctPnJhID0gcmE7CiAKQEAgLTM4OTMsNyArMzg5Myw3IEBAIGludCBsb2df cmVwbGF5KHN0cnVjdCBudGZzX2lub2RlICpuaSwgYm9vbCAqaW5pdGlhbGl6ZWQpCiAKIAkJLyog RG8gc29tZSBjaGVja3MgYmFzZWQgb24gd2hldGhlciB3ZSBoYXZlIGEgdmFsaWQgbG9nIHBhZ2Uu ICovCiAJCWlmICghcnN0X2luZm8udmFsaWRfcGFnZSkgewotCQkJb3Blbl9sb2dfY291bnQgPSBn ZXRfcmFuZG9tX2ludCgpOworCQkJb3Blbl9sb2dfY291bnQgPSBnZXRfcmFuZG9tX3UzMigpOwog CQkJZ290byBpbml0X2xvZ19pbnN0YW5jZTsKIAkJfQogCQlvcGVuX2xvZ19jb3VudCA9IGxlMzJf dG9fY3B1KHJhMi0+b3Blbl9sb2dfY291bnQpOwpAQCAtNDA0NCw3ICs0MDQ0LDcgQEAgaW50IGxv Z19yZXBsYXkoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBib29sICppbml0aWFsaXplZCkKIAkJbWVt Y3B5KHJhLT5jbGllbnRzLCBBZGQyUHRyKHJhMiwgdDE2KSwKIAkJICAgICAgIGxlMTZfdG9fY3B1 KHJhMi0+cmFfbGVuKSAtIHQxNik7CiAKLQkJbG9nLT5jdXJyZW50X29wZW5sb2dfY291bnQgPSBn ZXRfcmFuZG9tX2ludCgpOworCQlsb2ctPmN1cnJlbnRfb3BlbmxvZ19jb3VudCA9IGdldF9yYW5k b21fdTMyKCk7CiAJCXJhLT5vcGVuX2xvZ19jb3VudCA9IGNwdV90b19sZTMyKGxvZy0+Y3VycmVu dF9vcGVubG9nX2NvdW50KTsKIAkJbG9nLT5yYV9zaXplID0gb2Zmc2V0b2Yoc3RydWN0IFJFU1RB UlRfQVJFQSwgY2xpZW50cykgKwogCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgQ0xJRU5UX1JFQyk7 CmRpZmYgLS1naXQgYS9mcy91Ymlmcy9qb3VybmFsLmMgYi9mcy91Ymlmcy9qb3VybmFsLmMKaW5k ZXggNzVkYWIwYWUzOTM5Li40NjE5NjUyMDQ2Y2YgMTAwNjQ0Ci0tLSBhL2ZzL3ViaWZzL2pvdXJu YWwuYworKysgYi9mcy91Ymlmcy9qb3VybmFsLmMKQEAgLTUwMyw3ICs1MDMsNyBAQCBzdGF0aWMg dm9pZCBtYXJrX2lub2RlX2NsZWFuKHN0cnVjdCB1Ymlmc19pbmZvICpjLCBzdHJ1Y3QgdWJpZnNf aW5vZGUgKnVpKQogc3RhdGljIHZvaWQgc2V0X2RlbnRfY29va2llKHN0cnVjdCB1Ymlmc19pbmZv ICpjLCBzdHJ1Y3QgdWJpZnNfZGVudF9ub2RlICpkZW50KQogewogCWlmIChjLT5kb3VibGVfaGFz aCkKLQkJZGVudC0+Y29va2llID0gKF9fZm9yY2UgX19sZTMyKSBwcmFuZG9tX3UzMigpOworCQlk ZW50LT5jb29raWUgPSAoX19mb3JjZSBfX2xlMzIpIGdldF9yYW5kb21fdTMyKCk7CiAJZWxzZQog CQlkZW50LT5jb29raWUgPSAwOwogfQpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpYnhmcy94ZnNfaWFs bG9jLmMgYi9mcy94ZnMvbGlieGZzL3hmc19pYWxsb2MuYwppbmRleCA3ODM4YjMxMTI2ZTIuLjk0 ZGI1MGViNzA2YSAxMDA2NDQKLS0tIGEvZnMveGZzL2xpYnhmcy94ZnNfaWFsbG9jLmMKKysrIGIv ZnMveGZzL2xpYnhmcy94ZnNfaWFsbG9jLmMKQEAgLTgwNSw3ICs4MDUsNyBAQCB4ZnNfaWFsbG9j X2FnX2FsbG9jKAogCSAqIG51bWJlciBmcm9tIGJlaW5nIGVhc2lseSBndWVzc2FibGUuCiAJICov CiAJZXJyb3IgPSB4ZnNfaWFsbG9jX2lub2RlX2luaXQoYXJncy5tcCwgdHAsIE5VTEwsIG5ld2xl biwgcGFnLT5wYWdfYWdubywKLQkJCWFyZ3MuYWdibm8sIGFyZ3MubGVuLCBwcmFuZG9tX3UzMigp KTsKKwkJCWFyZ3MuYWdibm8sIGFyZ3MubGVuLCBnZXRfcmFuZG9tX3UzMigpKTsKIAogCWlmIChl cnJvcikKIAkJcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pY2FjaGUuYyBi L2ZzL3hmcy94ZnNfaWNhY2hlLmMKaW5kZXggMmJiZTc5MTZhOTk4Li5lYWU3NDI3MDYyY2YgMTAw NjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfaWNhY2hlLmMKKysrIGIvZnMveGZzL3hmc19pY2FjaGUuYwpA QCAtNTk2LDcgKzU5Niw3IEBAIHhmc19pZ2V0X2NhY2hlX21pc3MoCiAJICovCiAJaWYgKHhmc19o YXNfdjNpbm9kZXMobXApICYmCiAJICAgIChmbGFncyAmIFhGU19JR0VUX0NSRUFURSkgJiYgIXhm c19oYXNfaWtlZXAobXApKSB7Ci0JCVZGU19JKGlwKS0+aV9nZW5lcmF0aW9uID0gcHJhbmRvbV91 MzIoKTsKKwkJVkZTX0koaXApLT5pX2dlbmVyYXRpb24gPSBnZXRfcmFuZG9tX3UzMigpOwogCX0g ZWxzZSB7CiAJCXN0cnVjdCB4ZnNfYnVmCQkqYnA7CiAKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNf bG9nLmMgYi9mcy94ZnMveGZzX2xvZy5jCmluZGV4IDM4NmIwMzA3YWVkOC4uYWQ4NjUyY2JmMjQ1 IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2xvZy5jCisrKyBiL2ZzL3hmcy94ZnNfbG9nLmMKQEAg LTM1NDQsNyArMzU0NCw3IEBAIHhsb2dfdGlja2V0X2FsbG9jKAogCXRpYy0+dF9jdXJyX3JlcwkJ PSB1bml0X3JlczsKIAl0aWMtPnRfY250CQk9IGNudDsKIAl0aWMtPnRfb2NudAkJPSBjbnQ7Ci0J dGljLT50X3RpZAkJPSBwcmFuZG9tX3UzMigpOworCXRpYy0+dF90aWQJCT0gZ2V0X3JhbmRvbV91 MzIoKTsKIAlpZiAocGVybWFuZW50KQogCQl0aWMtPnRfZmxhZ3MgfD0gWExPR19USUNfUEVSTV9S RVNFUlY7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9xdWV1ZS5oIGIv aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3F1ZXVlLmgKaW5kZXggOTgwZGFhNmUxZTNhLi5jODEw MjFhYjA3YWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9xdWV1ZS5oCisr KyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9xdWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIHZv aWQgbmZfcXVldWVfZW50cnlfZnJlZShzdHJ1Y3QgbmZfcXVldWVfZW50cnkgKmVudHJ5KTsKIHN0 YXRpYyBpbmxpbmUgdm9pZCBpbml0X2hhc2hyYW5kb20odTMyICpqaGFzaF9pbml0dmFsKQogewog CXdoaWxlICgqamhhc2hfaW5pdHZhbCA9PSAwKQotCQkqamhhc2hfaW5pdHZhbCA9IHByYW5kb21f dTMyKCk7CisJCSpqaGFzaF9pbml0dmFsID0gZ2V0X3JhbmRvbV91MzIoKTsKIH0KIAogc3RhdGlj IGlubGluZSB1MzIgaGFzaF92NChjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCwgdTMyIGluaXR2YWwp CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9yZWQuaCBiL2luY2x1ZGUvbmV0L3JlZC5oCmluZGV4 IGJlMTFkYmQyNjQ5Mi4uNTZkMDY0N2Q3MzU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9yZWQu aAorKysgYi9pbmNsdWRlL25ldC9yZWQuaApAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBpbmxp bmUgdW5zaWduZWQgbG9uZyByZWRfY2FsY19xYXZnKGNvbnN0IHN0cnVjdCByZWRfcGFybXMgKnAs CiAKIHN0YXRpYyBpbmxpbmUgdTMyIHJlZF9yYW5kb20oY29uc3Qgc3RydWN0IHJlZF9wYXJtcyAq cCkKIHsKLQlyZXR1cm4gcmVjaXByb2NhbF9kaXZpZGUocHJhbmRvbV91MzIoKSwgcC0+bWF4X1Bf cmVjaXByb2NhbCk7CisJcmV0dXJuIHJlY2lwcm9jYWxfZGl2aWRlKGdldF9yYW5kb21fdTMyKCks IHAtPm1heF9QX3JlY2lwcm9jYWwpOwogfQogCiBzdGF0aWMgaW5saW5lIGludCByZWRfbWFya19w cm9iYWJpbGl0eShjb25zdCBzdHJ1Y3QgcmVkX3Bhcm1zICpwLApkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9uZXQvc29jay5oIGIvaW5jbHVkZS9uZXQvc29jay5oCmluZGV4IGQwOGNmZTE5MGE3OC4uY2Ey YjI2Njg2Njc3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9zb2NrLmgKKysrIGIvaW5jbHVkZS9u ZXQvc29jay5oCkBAIC0yMDkxLDcgKzIwOTEsNyBAQCBzdGF0aWMgaW5saW5lIGt1aWRfdCBzb2Nr X25ldF91aWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc29jayAqc2spCiAK IHN0YXRpYyBpbmxpbmUgdTMyIG5ldF90eF9ybmRoYXNoKHZvaWQpCiB7Ci0JdTMyIHYgPSBwcmFu ZG9tX3UzMigpOworCXUzMiB2ID0gZ2V0X3JhbmRvbV91MzIoKTsKIAogCXJldHVybiB2ID86IDE7 CiB9CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jIGIva2VybmVsL2JwZi9i bG9vbV9maWx0ZXIuYwppbmRleCBiOWVhNTM5YTU1NjEuLjQ4ZWU3NTA4NDlmMiAxMDA2NDQKLS0t IGEva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYworKysgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRl ci5jCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBf YWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpCiAJCQlhdHRyLT52YWx1ZV9zaXplIC8gc2l6ZW9m KHUzMik7CiAKIAlpZiAoIShhdHRyLT5tYXBfZmxhZ3MgJiBCUEZfRl9aRVJPX1NFRUQpKQotCQli bG9vbS0+aGFzaF9zZWVkID0gZ2V0X3JhbmRvbV9pbnQoKTsKKwkJYmxvb20tPmhhc2hfc2VlZCA9 IGdldF9yYW5kb21fdTMyKCk7CiAKIAlyZXR1cm4gJmJsb29tLT5tYXA7CiB9CmRpZmYgLS1naXQg YS9rZXJuZWwvYnBmL2NvcmUuYyBiL2tlcm5lbC9icGYvY29yZS5jCmluZGV4IGFkZTZiMDNiMWQ5 Yi4uZjZiMzQ4NmYwMDFhIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2NvcmUuYworKysgYi9rZXJu ZWwvYnBmL2NvcmUuYwpAQCAtMTIxMSw3ICsxMjExLDcgQEAgc3RhdGljIGludCBicGZfaml0X2Js aW5kX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICpmcm9tLAogCQkJICAgICAgYm9vbCBlbWl0 X3pleHQpCiB7CiAJc3RydWN0IGJwZl9pbnNuICp0byA9IHRvX2J1ZmY7Ci0JdTMyIGltbV9ybmQg PSBnZXRfcmFuZG9tX2ludCgpOworCXUzMiBpbW1fcm5kID0gZ2V0X3JhbmRvbV91MzIoKTsKIAlz MTYgb2ZmOwogCiAJQlVJTERfQlVHX09OKEJQRl9SRUdfQVggICsgMSAhPSBNQVhfQlBGX0pJVF9S RUcpOwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oYXNodGFiLmMgYi9rZXJuZWwvYnBmL2hhc2h0 YWIuYwppbmRleCA2YzUzMGE1ZTU2MGEuLjFkMzYxNzM1OThhMCAxMDA2NDQKLS0tIGEva2VybmVs L2JwZi9oYXNodGFiLmMKKysrIGIva2VybmVsL2JwZi9oYXNodGFiLmMKQEAgLTU0Niw3ICs1NDYs NyBAQCBzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmh0YWJfbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRy ICphdHRyKQogCWlmIChodGFiLT5tYXAubWFwX2ZsYWdzICYgQlBGX0ZfWkVST19TRUVEKQogCQlo dGFiLT5oYXNocm5kID0gMDsKIAllbHNlCi0JCWh0YWItPmhhc2hybmQgPSBnZXRfcmFuZG9tX2lu dCgpOworCQlodGFiLT5oYXNocm5kID0gZ2V0X3JhbmRvbV91MzIoKTsKIAogCWh0YWJfaW5pdF9i dWNrZXRzKGh0YWIpOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJu ZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggM2VhZGIxNGUwOTBiLi45NDNhZjVhYmRjMTggMTAwNjQ0 Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYworKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMK QEAgLTEzMzE3LDcgKzEzMzE3LDcgQEAgc3RhdGljIGludCBvcHRfc3VicmVnX3pleHRfbG8zMl9y bmRfaGkzMihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCQkJICAgIGF1eFthZGpfaWR4 XS5wdHJfdHlwZSA9PSBQVFJfVE9fQ1RYKQogCQkJCWNvbnRpbnVlOwogCi0JCQlpbW1fcm5kID0g Z2V0X3JhbmRvbV9pbnQoKTsKKwkJCWltbV9ybmQgPSBnZXRfcmFuZG9tX3UzMigpOwogCQkJcm5k X2hpMzJfcGF0Y2hbMF0gPSBpbnNuOwogCQkJcm5kX2hpMzJfcGF0Y2hbMV0uaW1tID0gaW1tX3Ju ZDsKIAkJCXJuZF9oaTMyX3BhdGNoWzNdLmRzdF9yZWcgPSBsb2FkX3JlZzsKZGlmZiAtLWdpdCBh L2tlcm5lbC9rY3Nhbi9zZWxmdGVzdC5jIGIva2VybmVsL2tjc2FuL3NlbGZ0ZXN0LmMKaW5kZXgg NzU3MTI5NTljODRlLi41OGI5NGRlYWU1YzAgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9rY3Nhbi9zZWxm dGVzdC5jCisrKyBiL2tlcm5lbC9rY3Nhbi9zZWxmdGVzdC5jCkBAIC0yNiw3ICsyNiw3IEBACiBz dGF0aWMgYm9vbCBfX2luaXQgdGVzdF9yZXF1aXJlcyh2b2lkKQogewogCS8qIHJhbmRvbSBzaG91 bGQgYmUgaW5pdGlhbGl6ZWQgZm9yIHRoZSBiZWxvdyB0ZXN0cyAqLwotCXJldHVybiBwcmFuZG9t X3UzMigpICsgcHJhbmRvbV91MzIoKSAhPSAwOworCXJldHVybiBnZXRfcmFuZG9tX3UzMigpICsg Z2V0X3JhbmRvbV91MzIoKSAhPSAwOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvbGliL3JhbmRvbTMy LmMgYi9saWIvcmFuZG9tMzIuYwppbmRleCBkNWQ5MDI5MzYyY2IuLmQ0ZjE5ZTFhNjlkNCAxMDA2 NDQKLS0tIGEvbGliL3JhbmRvbTMyLmMKKysrIGIvbGliL3JhbmRvbTMyLmMKQEAgLTQ3LDcgKzQ3 LDcgQEAKICAqCUBzdGF0ZTogcG9pbnRlciB0byBzdGF0ZSBzdHJ1Y3R1cmUgaG9sZGluZyBzZWVk ZWQgc3RhdGUuCiAgKgogICoJVGhpcyBpcyB1c2VkIGZvciBwc2V1ZG8tcmFuZG9tbmVzcyB3aXRo IG5vIG91dHNpZGUgc2VlZGluZy4KLSAqCUZvciBtb3JlIHJhbmRvbSByZXN1bHRzLCB1c2UgcHJh bmRvbV91MzIoKS4KKyAqCUZvciBtb3JlIHJhbmRvbSByZXN1bHRzLCB1c2UgZ2V0X3JhbmRvbV91 MzIoKS4KICAqLwogdTMyIHByYW5kb21fdTMyX3N0YXRlKHN0cnVjdCBybmRfc3RhdGUgKnN0YXRl KQogewpkaWZmIC0tZ2l0IGEvbGliL3JlZWRfc29sb21vbi90ZXN0X3JzbGliLmMgYi9saWIvcmVl ZF9zb2xvbW9uL3Rlc3RfcnNsaWIuYwppbmRleCA0ZDI0MWJkYzg4YWEuLjg0OGU3ZWI1ZGE5MiAx MDA2NDQKLS0tIGEvbGliL3JlZWRfc29sb21vbi90ZXN0X3JzbGliLmMKKysrIGIvbGliL3JlZWRf c29sb21vbi90ZXN0X3JzbGliLmMKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgaW50IGdldF9y Y3dfd2Uoc3RydWN0IHJzX2NvbnRyb2wgKnJzLCBzdHJ1Y3Qgd3NwYWNlICp3cywKIAogCS8qIExv YWQgYyB3aXRoIHJhbmRvbSBkYXRhIGFuZCBlbmNvZGUgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZGxl bjsgaSsrKQotCQljW2ldID0gcHJhbmRvbV91MzIoKSAmIG5uOworCQljW2ldID0gZ2V0X3JhbmRv bV91MzIoKSAmIG5uOwogCiAJbWVtc2V0KGMgKyBkbGVuLCAwLCBucm9vdHMgKiBzaXplb2YoKmMp KTsKIAllbmNvZGVfcnMxNihycywgYywgZGxlbiwgYyArIGRsZW4sIDApOwpAQCAtMTc4LDcgKzE3 OCw3IEBAIHN0YXRpYyBpbnQgZ2V0X3Jjd193ZShzdHJ1Y3QgcnNfY29udHJvbCAqcnMsIHN0cnVj dCB3c3BhY2UgKndzLAogCWZvciAoaSA9IDA7IGkgPCBlcnJzOyBpKyspIHsKIAkJZG8gewogCQkJ LyogRXJyb3IgdmFsdWUgbXVzdCBiZSBub256ZXJvICovCi0JCQllcnJ2YWwgPSBwcmFuZG9tX3Uz MigpICYgbm47CisJCQllcnJ2YWwgPSBnZXRfcmFuZG9tX3UzMigpICYgbm47CiAJCX0gd2hpbGUg KGVycnZhbCA9PSAwKTsKIAogCQlkbyB7CkBAIC0yMDYsNyArMjA2LDcgQEAgc3RhdGljIGludCBn ZXRfcmN3X3dlKHN0cnVjdCByc19jb250cm9sICpycywgc3RydWN0IHdzcGFjZSAqd3MsCiAJCQkv KiBFcmFzdXJlIHdpdGggY29ycnVwdGVkIHN5bWJvbCAqLwogCQkJZG8gewogCQkJCS8qIEVycm9y IHZhbHVlIG11c3QgYmUgbm9uemVybyAqLwotCQkJCWVycnZhbCA9IHByYW5kb21fdTMyKCkgJiBu bjsKKwkJCQllcnJ2YWwgPSBnZXRfcmFuZG9tX3UzMigpICYgbm47CiAJCQl9IHdoaWxlIChlcnJ2 YWwgPT0gMCk7CiAKIAkJCWVycmxvY3NbZXJybG9jXSA9IDE7CmRpZmYgLS1naXQgYS9saWIvdGVz dF9mcHJvYmUuYyBiL2xpYi90ZXN0X2Zwcm9iZS5jCmluZGV4IGVkNzA2MzdhMmZmYS4uZTAzODFi M2VjNDEwIDEwMDY0NAotLS0gYS9saWIvdGVzdF9mcHJvYmUuYworKysgYi9saWIvdGVzdF9mcHJv YmUuYwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9mdHJhY2Vf bG9jYXRpb24odm9pZCAqZnVuYykKIHN0YXRpYyBpbnQgZnByb2JlX3Rlc3RfaW5pdChzdHJ1Y3Qg a3VuaXQgKnRlc3QpCiB7CiAJZG8gewotCQlyYW5kMSA9IHByYW5kb21fdTMyKCk7CisJCXJhbmQx ID0gZ2V0X3JhbmRvbV91MzIoKTsKIAl9IHdoaWxlIChyYW5kMSA8PSBkaXZfZmFjdG9yKTsKIAog CXRhcmdldCA9IGZwcm9iZV9zZWxmdGVzdF90YXJnZXQ7CmRpZmYgLS1naXQgYS9saWIvdGVzdF9r cHJvYmVzLmMgYi9saWIvdGVzdF9rcHJvYmVzLmMKaW5kZXggYTVlZGMyZWJjOTQ3Li5lZWIxZDcy OGQ5NzQgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0X2twcm9iZXMuYworKysgYi9saWIvdGVzdF9rcHJv YmVzLmMKQEAgLTM0MSw3ICszNDEsNyBAQCBzdGF0aWMgaW50IGtwcm9iZXNfdGVzdF9pbml0KHN0 cnVjdCBrdW5pdCAqdGVzdCkKIAlzdGFja3RyYWNlX2RyaXZlciA9IGtwcm9iZV9zdGFja3RyYWNl X2RyaXZlcjsKIAogCWRvIHsKLQkJcmFuZDEgPSBwcmFuZG9tX3UzMigpOworCQlyYW5kMSA9IGdl dF9yYW5kb21fdTMyKCk7CiAJfSB3aGlsZSAocmFuZDEgPD0gZGl2X2ZhY3Rvcik7CiAJcmV0dXJu IDA7CiB9CmRpZmYgLS1naXQgYS9saWIvdGVzdF9taW5faGVhcC5jIGIvbGliL3Rlc3RfbWluX2hl YXAuYwppbmRleCBkMTljODA4MGZkNGQuLjdiMDFiNDM4N2NmYiAxMDA2NDQKLS0tIGEvbGliL3Rl c3RfbWluX2hlYXAuYworKysgYi9saWIvdGVzdF9taW5faGVhcC5jCkBAIC04Myw3ICs4Myw3IEBA IHN0YXRpYyBfX2luaXQgaW50IHRlc3RfaGVhcGlmeV9hbGwoYm9vbCBtaW5faGVhcCkKIAkvKiBU ZXN0IHdpdGggcmFuZG9tbHkgZ2VuZXJhdGVkIHZhbHVlcy4gKi8KIAloZWFwLm5yID0gQVJSQVlf U0laRSh2YWx1ZXMpOwogCWZvciAoaSA9IDA7IGkgPCBoZWFwLm5yOyBpKyspCi0JCXZhbHVlc1tp XSA9IGdldF9yYW5kb21faW50KCk7CisJCXZhbHVlc1tpXSA9IGdldF9yYW5kb21fdTMyKCk7CiAK IAltaW5faGVhcGlmeV9hbGwoJmhlYXAsICZmdW5jcyk7CiAJZXJyICs9IHBvcF92ZXJpZnlfaGVh cChtaW5faGVhcCwgJmhlYXAsICZmdW5jcyk7CkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIF9f aW5pdCBpbnQgdGVzdF9oZWFwX3B1c2goYm9vbCBtaW5faGVhcCkKIAogCS8qIFRlc3Qgd2l0aCBy YW5kb21seSBnZW5lcmF0ZWQgdmFsdWVzLiAqLwogCXdoaWxlIChoZWFwLm5yIDwgaGVhcC5zaXpl KSB7Ci0JCXRlbXAgPSBnZXRfcmFuZG9tX2ludCgpOworCQl0ZW1wID0gZ2V0X3JhbmRvbV91MzIo KTsKIAkJbWluX2hlYXBfcHVzaCgmaGVhcCwgJnRlbXAsICZmdW5jcyk7CiAJfQogCWVyciArPSBw b3BfdmVyaWZ5X2hlYXAobWluX2hlYXAsICZoZWFwLCAmZnVuY3MpOwpAQCAtMTU4LDcgKzE1OCw3 IEBAIHN0YXRpYyBfX2luaXQgaW50IHRlc3RfaGVhcF9wb3BfcHVzaChib29sIG1pbl9oZWFwKQog CiAJLyogVGVzdCB3aXRoIHJhbmRvbWx5IGdlbmVyYXRlZCB2YWx1ZXMuICovCiAJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoZGF0YSk7IGkrKykgewotCQl0ZW1wID0gZ2V0X3JhbmRvbV9pbnQo KTsKKwkJdGVtcCA9IGdldF9yYW5kb21fdTMyKCk7CiAJCW1pbl9oZWFwX3BvcF9wdXNoKCZoZWFw LCAmdGVtcCwgJmZ1bmNzKTsKIAl9CiAJZXJyICs9IHBvcF92ZXJpZnlfaGVhcChtaW5faGVhcCwg JmhlYXAsICZmdW5jcyk7CmRpZmYgLS1naXQgYS9saWIvdGVzdF9yaGFzaHRhYmxlLmMgYi9saWIv dGVzdF9yaGFzaHRhYmxlLmMKaW5kZXggNWExZGQ0NzM2YjU2Li5iMzU4YTc0ZWQ3ZWQgMTAwNjQ0 Ci0tLSBhL2xpYi90ZXN0X3JoYXNodGFibGUuYworKysgYi9saWIvdGVzdF9yaGFzaHRhYmxlLmMK QEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCB0ZXN0X3JobHRhYmxlKHVuc2ln bmVkIGludCBlbnRyaWVzKQogCWlmIChXQVJOX09OKGVycikpCiAJCWdvdG8gb3V0X2ZyZWU7CiAK LQlrID0gcHJhbmRvbV91MzIoKTsKKwlrID0gZ2V0X3JhbmRvbV91MzIoKTsKIAlyZXQgPSAwOwog CWZvciAoaSA9IDA7IGkgPCBlbnRyaWVzOyBpKyspIHsKIAkJcmhsX3Rlc3Rfb2JqZWN0c1tpXS52 YWx1ZS5pZCA9IGs7CkBAIC0zNjksMTIgKzM2OSwxMiBAQCBzdGF0aWMgaW50IF9faW5pdCB0ZXN0 X3JobHRhYmxlKHVuc2lnbmVkIGludCBlbnRyaWVzKQogCXByX2luZm8oInRlc3QgJWQgcmFuZG9t IHJobGlzdCBhZGQvZGVsZXRlIG9wZXJhdGlvbnNcbiIsIGVudHJpZXMpOwogCWZvciAoaiA9IDA7 IGogPCBlbnRyaWVzOyBqKyspIHsKIAkJdTMyIGkgPSBwcmFuZG9tX3UzMl9tYXgoZW50cmllcyk7 Ci0JCXUzMiBwcmFuZCA9IHByYW5kb21fdTMyKCk7CisJCXUzMiBwcmFuZCA9IGdldF9yYW5kb21f dTMyKCk7CiAKIAkJY29uZF9yZXNjaGVkKCk7CiAKIAkJaWYgKHByYW5kID09IDApCi0JCQlwcmFu ZCA9IHByYW5kb21fdTMyKCk7CisJCQlwcmFuZCA9IGdldF9yYW5kb21fdTMyKCk7CiAKIAkJaWYg KHByYW5kICYgMSkgewogCQkJcHJhbmQgPj49IDE7CmRpZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIv bW0vc2htZW0uYwppbmRleCA0MmU1ODg4YmY4NGQuLjZmMmNlZjczODA4ZCAxMDA2NDQKLS0tIGEv bW0vc2htZW0uYworKysgYi9tbS9zaG1lbS5jCkBAIC0yMzMwLDcgKzIzMzAsNyBAQCBzdGF0aWMg c3RydWN0IGlub2RlICpzaG1lbV9nZXRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3Ry dWN0IGlub2RlICpkaXIsCiAJCWlub2RlX2luaXRfb3duZXIoJmluaXRfdXNlcl9ucywgaW5vZGUs IGRpciwgbW9kZSk7CiAJCWlub2RlLT5pX2Jsb2NrcyA9IDA7CiAJCWlub2RlLT5pX2F0aW1lID0g aW5vZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IGN1cnJlbnRfdGltZShpbm9kZSk7Ci0J CWlub2RlLT5pX2dlbmVyYXRpb24gPSBwcmFuZG9tX3UzMigpOworCQlpbm9kZS0+aV9nZW5lcmF0 aW9uID0gZ2V0X3JhbmRvbV91MzIoKTsKIAkJaW5mbyA9IFNITUVNX0koaW5vZGUpOwogCQltZW1z ZXQoaW5mbywgMCwgKGNoYXIgKilpbm9kZSAtIChjaGFyICopaW5mbyk7CiAJCXNwaW5fbG9ja19p bml0KCZpbmZvLT5sb2NrKTsKZGlmZiAtLWdpdCBhL21tL3NsYWIuYyBiL21tL3NsYWIuYwppbmRl eCAxMGU5NjEzN2I0NGYuLjM2ZWQ3MTgyYmFkNSAxMDA2NDQKLS0tIGEvbW0vc2xhYi5jCisrKyBi L21tL3NsYWIuYwpAQCAtMjM4MCw3ICsyMzgwLDcgQEAgc3RhdGljIGJvb2wgZnJlZWxpc3Rfc3Rh dGVfaW5pdGlhbGl6ZSh1bmlvbiBmcmVlbGlzdF9pbml0X3N0YXRlICpzdGF0ZSwKIAl1bnNpZ25l ZCBpbnQgcmFuZDsKIAogCS8qIFVzZSBiZXN0IGVudHJvcHkgYXZhaWxhYmxlIHRvIGRlZmluZSBh IHJhbmRvbSBzaGlmdCAqLwotCXJhbmQgPSBnZXRfcmFuZG9tX2ludCgpOworCXJhbmQgPSBnZXRf cmFuZG9tX3UzMigpOwogCiAJLyogVXNlIGEgcmFuZG9tIHN0YXRlIGlmIHRoZSBwcmUtY29tcHV0 ZWQgbGlzdCBpcyBub3QgYXZhaWxhYmxlICovCiAJaWYgKCFjYWNoZXAtPnJhbmRvbV9zZXEpIHsK ZGlmZiAtLWdpdCBhL25ldC84MDIvZ2FycC5jIGIvbmV0LzgwMi9nYXJwLmMKaW5kZXggZjYwMTJm OGU1OWYwLi5jMWJiNjdlMjU0MzAgMTAwNjQ0Ci0tLSBhL25ldC84MDIvZ2FycC5jCisrKyBiL25l dC84MDIvZ2FycC5jCkBAIC00MDcsNyArNDA3LDcgQEAgc3RhdGljIHZvaWQgZ2FycF9qb2luX3Rp bWVyX2FybShzdHJ1Y3QgZ2FycF9hcHBsaWNhbnQgKmFwcCkKIHsKIAl1bnNpZ25lZCBsb25nIGRl bGF5OwogCi0JZGVsYXkgPSAodTY0KW1zZWNzX3RvX2ppZmZpZXMoZ2FycF9qb2luX3RpbWUpICog cHJhbmRvbV91MzIoKSA+PiAzMjsKKwlkZWxheSA9ICh1NjQpbXNlY3NfdG9famlmZmllcyhnYXJw X2pvaW5fdGltZSkgKiBnZXRfcmFuZG9tX3UzMigpID4+IDMyOwogCW1vZF90aW1lcigmYXBwLT5q b2luX3RpbWVyLCBqaWZmaWVzICsgZGVsYXkpOwogfQogCmRpZmYgLS1naXQgYS9uZXQvODAyL21y cC5jIGIvbmV0LzgwMi9tcnAuYwppbmRleCAzNWUwNGNjNTM5MGMuLjNlOWZlOWY1ZDliZiAxMDA2 NDQKLS0tIGEvbmV0LzgwMi9tcnAuYworKysgYi9uZXQvODAyL21ycC5jCkBAIC01OTIsNyArNTky LDcgQEAgc3RhdGljIHZvaWQgbXJwX2pvaW5fdGltZXJfYXJtKHN0cnVjdCBtcnBfYXBwbGljYW50 ICphcHApCiB7CiAJdW5zaWduZWQgbG9uZyBkZWxheTsKIAotCWRlbGF5ID0gKHU2NCltc2Vjc190 b19qaWZmaWVzKG1ycF9qb2luX3RpbWUpICogcHJhbmRvbV91MzIoKSA+PiAzMjsKKwlkZWxheSA9 ICh1NjQpbXNlY3NfdG9famlmZmllcyhtcnBfam9pbl90aW1lKSAqIGdldF9yYW5kb21fdTMyKCkg Pj4gMzI7CiAJbW9kX3RpbWVyKCZhcHAtPmpvaW5fdGltZXIsIGppZmZpZXMgKyBkZWxheSk7CiB9 CiAKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3BrdGdlbi5jIGIvbmV0L2NvcmUvcGt0Z2VuLmMKaW5k ZXggNWNhNGY5NTMwMzRjLi5jMzc2MzA1NmM1NTQgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3BrdGdl bi5jCisrKyBiL25ldC9jb3JlL3BrdGdlbi5jCkBAIC0yNDY0LDcgKzI0NjQsNyBAQCBzdGF0aWMg dm9pZCBtb2RfY3VyX2hlYWRlcnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAJCWZvciAo aSA9IDA7IGkgPCBwa3RfZGV2LT5ucl9sYWJlbHM7IGkrKykKIAkJCWlmIChwa3RfZGV2LT5sYWJl bHNbaV0gJiBNUExTX1NUQUNLX0JPVFRPTSkKIAkJCQlwa3RfZGV2LT5sYWJlbHNbaV0gPSBNUExT X1NUQUNLX0JPVFRPTSB8Ci0JCQkJCSAgICAgKChfX2ZvcmNlIF9fYmUzMilwcmFuZG9tX3UzMigp ICYKKwkJCQkJICAgICAoKF9fZm9yY2UgX19iZTMyKWdldF9yYW5kb21fdTMyKCkgJgogCQkJCQkJ ICAgICAgaHRvbmwoMHgwMDBmZmZmZikpOwogCX0KIApAQCAtMjU2OCw3ICsyNTY4LDcgQEAgc3Rh dGljIHZvaWQgbW9kX2N1cl9oZWFkZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCiAJ CQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAJCQkJcGt0X2Rldi0+Y3VyX2luNl9kYWRkci5z Nl9hZGRyMzJbaV0gPQotCQkJCSAgICAoKChfX2ZvcmNlIF9fYmUzMilwcmFuZG9tX3UzMigpIHwK KwkJCQkgICAgKCgoX19mb3JjZSBfX2JlMzIpZ2V0X3JhbmRvbV91MzIoKSB8CiAJCQkJICAgICAg cGt0X2Rldi0+bWluX2luNl9kYWRkci5zNl9hZGRyMzJbaV0pICYKIAkJCQkgICAgIHBrdF9kZXYt Pm1heF9pbjZfZGFkZHIuczZfYWRkcjMyW2ldKTsKIAkJCX0KZGlmZiAtLWdpdCBhL25ldC9pcHY0 L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jCmluZGV4IDc5NWNiZTFkZTkxMi4uMWEzN2EwN2M3 MTYzIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9yb3V0ZS5jCisrKyBiL25ldC9pcHY0L3JvdXRlLmMK QEAgLTM2NjQsNyArMzY2NCw3IEBAIHN0YXRpYyBfX25ldF9pbml0IGludCBydF9nZW5pZF9pbml0 KHN0cnVjdCBuZXQgKm5ldCkKIHsKIAlhdG9taWNfc2V0KCZuZXQtPmlwdjQucnRfZ2VuaWQsIDAp OwogCWF0b21pY19zZXQoJm5ldC0+Zm5oZV9nZW5pZCwgMCk7Ci0JYXRvbWljX3NldCgmbmV0LT5p cHY0LmRldl9hZGRyX2dlbmlkLCBnZXRfcmFuZG9tX2ludCgpKTsKKwlhdG9taWNfc2V0KCZuZXQt PmlwdjQuZGV2X2FkZHJfZ2VuaWQsIGdldF9yYW5kb21fdTMyKCkpOwogCXJldHVybiAwOwogfQog CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfY2RnLmMgYi9uZXQvaXB2NC90Y3BfY2RnLmMKaW5k ZXggZGRjN2JhMDU1NGJkLi5lZmNkMTQ1ZjA2ZGIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9j ZGcuYworKysgYi9uZXQvaXB2NC90Y3BfY2RnLmMKQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMg Ym9vbCB0Y3BfY2RnX2JhY2tvZmYoc3RydWN0IHNvY2sgKnNrLCB1MzIgZ3JhZCkKIAlzdHJ1Y3Qg Y2RnICpjYSA9IGluZXRfY3NrX2NhKHNrKTsKIAlzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3Nr KHNrKTsKIAotCWlmIChwcmFuZG9tX3UzMigpIDw9IG5leHBfdTMyKGdyYWQgKiBiYWNrb2ZmX2Zh Y3RvcikpCisJaWYgKGdldF9yYW5kb21fdTMyKCkgPD0gbmV4cF91MzIoZ3JhZCAqIGJhY2tvZmZf ZmFjdG9yKSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKHVzZV9pbmVmZikgewpkaWZmIC0tZ2l0 IGEvbmV0L2lwdjQvdWRwLmMgYi9uZXQvaXB2NC91ZHAuYwppbmRleCA1NjBkOWVhZGVhYTUuLjFh NWIyNDY0NTQ4ZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdWRwLmMKKysrIGIvbmV0L2lwdjQvdWRw LmMKQEAgLTI0Niw3ICsyNDYsNyBAQCBpbnQgdWRwX2xpYl9nZXRfcG9ydChzdHJ1Y3Qgc29jayAq c2ssIHVuc2lnbmVkIHNob3J0IHNudW0sCiAJCWluZXRfZ2V0X2xvY2FsX3BvcnRfcmFuZ2UobmV0 LCAmbG93LCAmaGlnaCk7CiAJCXJlbWFpbmluZyA9IChoaWdoIC0gbG93KSArIDE7CiAKLQkJcmFu ZCA9IHByYW5kb21fdTMyKCk7CisJCXJhbmQgPSBnZXRfcmFuZG9tX3UzMigpOwogCQlmaXJzdCA9 IHJlY2lwcm9jYWxfc2NhbGUocmFuZCwgcmVtYWluaW5nKSArIGxvdzsKIAkJLyoKIAkJICogZm9y Y2UgcmFuZCB0byBiZSBhbiBvZGQgbXVsdGlwbGUgb2YgVURQX0hUQUJMRV9TSVpFCmRpZmYgLS1n aXQgYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMK aW5kZXggY2ViODVjNjdjZTM5Li4xODQ4MWViNzZhMGEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lw Nl9mbG93bGFiZWwuYworKysgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMKQEAgLTIyMCw3ICsy MjAsNyBAQCBzdGF0aWMgc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsX2ludGVybihzdHJ1Y3QgbmV0 ICpuZXQsCiAJc3Bpbl9sb2NrX2JoKCZpcDZfZmxfbG9jayk7CiAJaWYgKGxhYmVsID09IDApIHsK IAkJZm9yICg7OykgewotCQkJZmwtPmxhYmVsID0gaHRvbmwocHJhbmRvbV91MzIoKSkmSVBWNl9G TE9XTEFCRUxfTUFTSzsKKwkJCWZsLT5sYWJlbCA9IGh0b25sKGdldF9yYW5kb21fdTMyKCkpJklQ VjZfRkxPV0xBQkVMX01BU0s7CiAJCQlpZiAoZmwtPmxhYmVsKSB7CiAJCQkJbGZsID0gX19mbF9s b29rdXAobmV0LCBmbC0+bGFiZWwpOwogCQkJCWlmICghbGZsKQpkaWZmIC0tZ2l0IGEvbmV0L2lw djYvb3V0cHV0X2NvcmUuYyBiL25ldC9pcHY2L291dHB1dF9jb3JlLmMKaW5kZXggMjg4MGRjN2Q5 YTQ5Li4yNjg1YzNmMTVlOWQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L291dHB1dF9jb3JlLmMKKysr IGIvbmV0L2lwdjYvb3V0cHV0X2NvcmUuYwpAQCAtMTgsNyArMTgsNyBAQCBzdGF0aWMgdTMyIF9f aXB2Nl9zZWxlY3RfaWRlbnQoc3RydWN0IG5ldCAqbmV0LAogCXUzMiBpZDsKIAogCWRvIHsKLQkJ aWQgPSBwcmFuZG9tX3UzMigpOworCQlpZCA9IGdldF9yYW5kb21fdTMyKCk7CiAJfSB3aGlsZSAo IWlkKTsKIAogCXJldHVybiBpZDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92 c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCmluZGV4IGZiNjdmMWNh MjQ5NS4uOGMwNGJiNTdkZDZmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNf Y29ubi5jCisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKQEAgLTEzMDgsNyAr MTMwOCw3IEBAIHZvaWQgaXBfdnNfcmFuZG9tX2Ryb3BlbnRyeShzdHJ1Y3QgbmV0bnNfaXB2cyAq aXB2cykKIAkgKiBSYW5kb21seSBzY2FuIDEvMzIgb2YgdGhlIHdob2xlIHRhYmxlIGV2ZXJ5IHNl Y29uZAogCSAqLwogCWZvciAoaWR4ID0gMDsgaWR4IDwgKGlwX3ZzX2Nvbm5fdGFiX3NpemU+PjUp OyBpZHgrKykgewotCQl1bnNpZ25lZCBpbnQgaGFzaCA9IHByYW5kb21fdTMyKCkgJiBpcF92c19j b25uX3RhYl9tYXNrOworCQl1bnNpZ25lZCBpbnQgaGFzaCA9IGdldF9yYW5kb21fdTMyKCkgJiBp cF92c19jb25uX3RhYl9tYXNrOwogCiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShjcCwgJmlw X3ZzX2Nvbm5fdGFiW2hhc2hdLCBjX2xpc3QpIHsKIAkJCWlmIChjcC0+aXB2cyAhPSBpcHZzKQpk aWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9zdGF0aXN0aWMuYyBiL25ldC9uZXRmaWx0ZXIv eHRfc3RhdGlzdGljLmMKaW5kZXggMjAzZTI0YWU0NzJjLi5iMjZjMWRjZmMyN2IgMTAwNjQ0Ci0t LSBhL25ldC9uZXRmaWx0ZXIveHRfc3RhdGlzdGljLmMKKysrIGIvbmV0L25ldGZpbHRlci94dF9z dGF0aXN0aWMuYwpAQCAtMzQsNyArMzQsNyBAQCBzdGF0aXN0aWNfbXQoY29uc3Qgc3RydWN0IHNr X2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCiAJc3dpdGNoIChpbmZv LT5tb2RlKSB7CiAJY2FzZSBYVF9TVEFUSVNUSUNfTU9ERV9SQU5ET006Ci0JCWlmICgocHJhbmRv bV91MzIoKSAmIDB4N0ZGRkZGRkYpIDwgaW5mby0+dS5yYW5kb20ucHJvYmFiaWxpdHkpCisJCWlm ICgoZ2V0X3JhbmRvbV91MzIoKSAmIDB4N0ZGRkZGRkYpIDwgaW5mby0+dS5yYW5kb20ucHJvYmFi aWxpdHkpCiAJCQlyZXQgPSAhcmV0OwogCQlicmVhazsKIAljYXNlIFhUX1NUQVRJU1RJQ19NT0RF X05USDoKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZz d2l0Y2gvYWN0aW9ucy5jCmluZGV4IDg2OGRiNDY2OWEyOS4uY2EzZWJmZGIzMDIzIDEwMDY0NAot LS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCisrKyBiL25ldC9vcGVudnN3aXRjaC9hY3Rp b25zLmMKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHN0YXRpYyBpbnQgc2FtcGxlKHN0cnVjdCBkYXRh cGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsCiAJYWN0aW9ucyA9IG5sYV9uZXh0KHNhbXBs ZV9hcmcsICZyZW0pOwogCiAJaWYgKChhcmctPnByb2JhYmlsaXR5ICE9IFUzMl9NQVgpICYmCi0J ICAgICghYXJnLT5wcm9iYWJpbGl0eSB8fCBwcmFuZG9tX3UzMigpID4gYXJnLT5wcm9iYWJpbGl0 eSkpIHsKKwkgICAgKCFhcmctPnByb2JhYmlsaXR5IHx8IGdldF9yYW5kb21fdTMyKCkgPiBhcmct PnByb2JhYmlsaXR5KSkgewogCQlpZiAobGFzdCkKIAkJCWNvbnN1bWVfc2tiKHNrYik7CiAJCXJl dHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L3Jkcy9iaW5kLmMgYi9uZXQvcmRzL2JpbmQuYwppbmRl eCA1YjVmYjRjYThkM2UuLjA1Mjc3NmRkY2MzNCAxMDA2NDQKLS0tIGEvbmV0L3Jkcy9iaW5kLmMK KysrIGIvbmV0L3Jkcy9iaW5kLmMKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgaW50IHJkc19h ZGRfYm91bmQoc3RydWN0IHJkc19zb2NrICpycywgY29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRy LAogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCWxhc3QgPSByb3ZlcjsKIAl9IGVsc2UgewotCQlyb3Zl ciA9IG1heF90KHUxNiwgcHJhbmRvbV91MzIoKSwgMik7CisJCXJvdmVyID0gbWF4X3QodTE2LCBn ZXRfcmFuZG9tX3UzMigpLCAyKTsKIAkJbGFzdCA9IHJvdmVyIC0gMTsKIAl9CiAKZGlmZiAtLWdp dCBhL25ldC9zY2hlZC9zY2hfY2FrZS5jIGIvbmV0L3NjaGVkL3NjaF9jYWtlLmMKaW5kZXggNjM3 ZWYxNzU3OTMxLi40OGUzZTA1MjI4YTEgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfY2FrZS5j CisrKyBiL25ldC9zY2hlZC9zY2hfY2FrZS5jCkBAIC01NzMsNyArNTczLDcgQEAgc3RhdGljIGJv b2wgY29iYWx0X3Nob3VsZF9kcm9wKHN0cnVjdCBjb2JhbHRfdmFycyAqdmFycywKIAogCS8qIFNp bXBsZSBCTFVFIGltcGxlbWVudGF0aW9uLiAgTGFjayBvZiBFQ04gaXMgZGVsaWJlcmF0ZS4gKi8K IAlpZiAodmFycy0+cF9kcm9wKQotCQlkcm9wIHw9IChwcmFuZG9tX3UzMigpIDwgdmFycy0+cF9k cm9wKTsKKwkJZHJvcCB8PSAoZ2V0X3JhbmRvbV91MzIoKSA8IHZhcnMtPnBfZHJvcCk7CiAKIAkv KiBPdmVybG9hZCB0aGUgZHJvcF9uZXh0IGZpZWxkIGFzIGFuIGFjdGl2aXR5IHRpbWVvdXQgKi8K IAlpZiAoIXZhcnMtPmNvdW50KQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9uZXRlbS5jIGIv bmV0L3NjaGVkL3NjaF9uZXRlbS5jCmluZGV4IDNjYTMyMGYxYTAzMS4uODhjMWZhMmUxZDE1IDEw MDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX25ldGVtLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9uZXRl bS5jCkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0ZW1fc2tiX2Ni ICpuZXRlbV9za2JfY2Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKIHN0YXRpYyB2b2lkIGluaXRfY3Jh bmRvbShzdHJ1Y3QgY3JuZHN0YXRlICpzdGF0ZSwgdW5zaWduZWQgbG9uZyByaG8pCiB7CiAJc3Rh dGUtPnJobyA9IHJobzsKLQlzdGF0ZS0+bGFzdCA9IHByYW5kb21fdTMyKCk7CisJc3RhdGUtPmxh c3QgPSBnZXRfcmFuZG9tX3UzMigpOwogfQogCiAvKiBnZXRfY3JhbmRvbSAtIGNvcnJlbGF0ZWQg cmFuZG9tIG51bWJlciBnZW5lcmF0b3IKQEAgLTE4NCw5ICsxODQsOSBAQCBzdGF0aWMgdTMyIGdl dF9jcmFuZG9tKHN0cnVjdCBjcm5kc3RhdGUgKnN0YXRlKQogCXVuc2lnbmVkIGxvbmcgYW5zd2Vy OwogCiAJaWYgKCFzdGF0ZSB8fCBzdGF0ZS0+cmhvID09IDApCS8qIG5vIGNvcnJlbGF0aW9uICov Ci0JCXJldHVybiBwcmFuZG9tX3UzMigpOworCQlyZXR1cm4gZ2V0X3JhbmRvbV91MzIoKTsKIAot CXZhbHVlID0gcHJhbmRvbV91MzIoKTsKKwl2YWx1ZSA9IGdldF9yYW5kb21fdTMyKCk7CiAJcmhv ID0gKHU2NClzdGF0ZS0+cmhvICsgMTsKIAlhbnN3ZXIgPSAodmFsdWUgKiAoKDF1bGw8PDMyKSAt IHJobykgKyBzdGF0ZS0+bGFzdCAqIHJobykgPj4gMzI7CiAJc3RhdGUtPmxhc3QgPSBhbnN3ZXI7 CkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIHUzMiBnZXRfY3JhbmRvbShzdHJ1Y3QgY3JuZHN0 YXRlICpzdGF0ZSkKIHN0YXRpYyBib29sIGxvc3NfNHN0YXRlKHN0cnVjdCBuZXRlbV9zY2hlZF9k YXRhICpxKQogewogCXN0cnVjdCBjbGdzdGF0ZSAqY2xnID0gJnEtPmNsZzsKLQl1MzIgcm5kID0g cHJhbmRvbV91MzIoKTsKKwl1MzIgcm5kID0gZ2V0X3JhbmRvbV91MzIoKTsKIAogCS8qCiAJICog TWFrZXMgYSBjb21wYXJpc29uIGJldHdlZW4gcm5kIGFuZCB0aGUgdHJhbnNpdGlvbgpAQCAtMjY4 LDE1ICsyNjgsMTUgQEAgc3RhdGljIGJvb2wgbG9zc19naWxiX2VsbChzdHJ1Y3QgbmV0ZW1fc2No ZWRfZGF0YSAqcSkKIAogCXN3aXRjaCAoY2xnLT5zdGF0ZSkgewogCWNhc2UgR09PRF9TVEFURToK LQkJaWYgKHByYW5kb21fdTMyKCkgPCBjbGctPmExKQorCQlpZiAoZ2V0X3JhbmRvbV91MzIoKSA8 IGNsZy0+YTEpCiAJCQljbGctPnN0YXRlID0gQkFEX1NUQVRFOwotCQlpZiAocHJhbmRvbV91MzIo KSA8IGNsZy0+YTQpCisJCWlmIChnZXRfcmFuZG9tX3UzMigpIDwgY2xnLT5hNCkKIAkJCXJldHVy biB0cnVlOwogCQlicmVhazsKIAljYXNlIEJBRF9TVEFURToKLQkJaWYgKHByYW5kb21fdTMyKCkg PCBjbGctPmEyKQorCQlpZiAoZ2V0X3JhbmRvbV91MzIoKSA8IGNsZy0+YTIpCiAJCQljbGctPnN0 YXRlID0gR09PRF9TVEFURTsKLQkJaWYgKHByYW5kb21fdTMyKCkgPiBjbGctPmEzKQorCQlpZiAo Z2V0X3JhbmRvbV91MzIoKSA+IGNsZy0+YTMpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKQEAgLTYz Miw3ICs2MzIsNyBAQCBzdGF0aWMgdm9pZCBnZXRfc2xvdF9uZXh0KHN0cnVjdCBuZXRlbV9zY2hl ZF9kYXRhICpxLCB1NjQgbm93KQogCiAJaWYgKCFxLT5zbG90X2Rpc3QpCiAJCW5leHRfZGVsYXkg PSBxLT5zbG90X2NvbmZpZy5taW5fZGVsYXkgKwotCQkJCShwcmFuZG9tX3UzMigpICoKKwkJCQko Z2V0X3JhbmRvbV91MzIoKSAqCiAJCQkJIChxLT5zbG90X2NvbmZpZy5tYXhfZGVsYXkgLQogCQkJ CSAgcS0+c2xvdF9jb25maWcubWluX2RlbGF5KSA+PiAzMik7CiAJZWxzZQpkaWZmIC0tZ2l0IGEv bmV0L3N1bnJwYy9hdXRoX2dzcy9nc3Nfa3JiNV93cmFwLmMgYi9uZXQvc3VucnBjL2F1dGhfZ3Nz L2dzc19rcmI1X3dyYXAuYwppbmRleCA1Zjk2ZTc1ZjllZWMuLjQ4MzM3Njg3ODQ4YyAxMDA2NDQK LS0tIGEvbmV0L3N1bnJwYy9hdXRoX2dzcy9nc3Nfa3JiNV93cmFwLmMKKysrIGIvbmV0L3N1bnJw Yy9hdXRoX2dzcy9nc3Nfa3JiNV93cmFwLmMKQEAgLTEzMCw4ICsxMzAsOCBAQCBnc3Nfa3JiNV9t YWtlX2NvbmZvdW5kZXIoY2hhciAqcCwgdTMyIGNvbmZsZW4pCiAKIAkvKiBpbml0aWFsaXplIHRv IHJhbmRvbSB2YWx1ZSAqLwogCWlmIChpID09IDApIHsKLQkJaSA9IHByYW5kb21fdTMyKCk7Ci0J CWkgPSAoaSA8PCAzMikgfCBwcmFuZG9tX3UzMigpOworCQlpID0gZ2V0X3JhbmRvbV91MzIoKTsK KwkJaSA9IChpIDw8IDMyKSB8IGdldF9yYW5kb21fdTMyKCk7CiAJfQogCiAJc3dpdGNoIChjb25m bGVuKSB7CmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnQuYyBiL25ldC9zdW5ycGMveHBydC5j CmluZGV4IGY4ZmFlNzgxNTY0OS4uOTQwNzAwN2Y0N2FlIDEwMDY0NAotLS0gYS9uZXQvc3VucnBj L3hwcnQuYworKysgYi9uZXQvc3VucnBjL3hwcnQuYwpAQCAtMTg2OCw3ICsxODY4LDcgQEAgeHBy dF9hbGxvY194aWQoc3RydWN0IHJwY194cHJ0ICp4cHJ0KQogc3RhdGljIHZvaWQKIHhwcnRfaW5p dF94aWQoc3RydWN0IHJwY194cHJ0ICp4cHJ0KQogewotCXhwcnQtPnhpZCA9IHByYW5kb21fdTMy KCk7CisJeHBydC0+eGlkID0gZ2V0X3JhbmRvbV91MzIoKTsKIH0KIAogc3RhdGljIHZvaWQKZGlm ZiAtLWdpdCBhL25ldC91bml4L2FmX3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguYwppbmRleCBi ZjMzOGI3ODJmYzQuLjM1YmQ4MTMyMTEzZiAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5j CisrKyBiL25ldC91bml4L2FmX3VuaXguYwpAQCAtMTExNiw3ICsxMTE2LDcgQEAgc3RhdGljIGlu dCB1bml4X2F1dG9iaW5kKHN0cnVjdCBzb2NrICpzaykKIAlhZGRyLT5uYW1lLT5zdW5fZmFtaWx5 ID0gQUZfVU5JWDsKIAlyZWZjb3VudF9zZXQoJmFkZHItPnJlZmNudCwgMSk7CiAKLQlvcmRlcm51 bSA9IHByYW5kb21fdTMyKCk7CisJb3JkZXJudW0gPSBnZXRfcmFuZG9tX3UzMigpOwogCWxhc3Ru dW0gPSBvcmRlcm51bSAmIDB4RkZGRkY7CiByZXRyeToKIAlvcmRlcm51bSA9IChvcmRlcm51bSAr IDEpICYgMHhGRkZGRjsKLS0gCjIuMzcuMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxp c3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQv Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 01B9DC433F5 for ; Sat, 8 Oct 2022 01:41:00 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4MknvH3n1zz3fH0 for ; Sat, 8 Oct 2022 12:40:59 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=zx2c4.com header.i=@zx2c4.com header.a=rsa-sha256 header.s=20210105 header.b=euNgJxVq; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org (client-ip=145.40.68.75; helo=ams.source.kernel.org; envelope-from=srs0=jvfi=2i=zx2c4.com=jason@kernel.org; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=zx2c4.com header.i=@zx2c4.com header.a=rsa-sha256 header.s=20210105 header.b=euNgJxVq; dkim-atps=neutral Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4Mkbjp6DZ5z3c81 for ; Sat, 8 Oct 2022 05:02:06 +1100 (AEDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 392C3B8207A; Fri, 7 Oct 2022 18:02:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82876C4347C; Fri, 7 Oct 2022 18:01:56 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="euNgJxVq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1665165715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Oc6/1ZWlb4i/syn+rQnwKmyTrWzXgR+Sp5qDpXPBj58=; b=euNgJxVq1cTLH+PSu4x5kaDU1jWoeunaqhNAUeBuVfaIcPpI59rzVg4T1+9JNuGUdNExgP f1zdMVnZYnXRFhD5QOcswd+kRexoftkpI4LOukNnbJ1/pPDP8R4LAhscxd6h01MoUgtXFL iejlTcwWxyIuqyfxsLZ8OI/C+vckLCo= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 4d33910a (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Fri, 7 Oct 2022 18:01:55 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org, patches@lists.linux.dev Subject: [PATCH v4 4/6] treewide: use get_random_u32() when possible Date: Fri, 7 Oct 2022 12:01:05 -0600 Message-Id: <20221007180107.216067-5-Jason@zx2c4.com> In-Reply-To: <20221007180107.216067-1-Jason@zx2c4.com> References: <20221007180107.216067-1-Jason@zx2c4.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Sat, 08 Oct 2022 12:28:34 +1100 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-wireless@vger.kernel.org, "Jason A. Donenfeld" , x86@kernel.org, Jan Kara , Vignesh Raghavendra , linux-doc@vger.kernel.org, Peter Zijlstra , Catalin Marinas , Dave Hansen , kernel-janitors@vger.kernel.org, KP Singh , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, Eric Dumazet , netdev@vger.kernel.org, linux-mtd@lists.infradead.org, kasan-dev@googlegroups.com, "H . Peter Anvin" , Andreas Noever , WANG Xuerui , Will Deacon , Christoph Hellwig , linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, Mauro Carvalho Chehab , Herbert Xu , Daniel Borkmann , Jonathan Corbet , linux-rdma@vger.kernel.org, Helge Deller , Huacai Chen , Hugh Dickins , Russell King , Jozsef Kadlecsik , Jason Gunthorpe , Dave Airlie , Ulf Hansson , Paolo Abeni , "James E . J . Bottomley" , Pablo Neira Ayuso , linux-media@vger.kernel.org, Marco Elver , Kees Cook , Yury Norov , Heiko Carstens , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , linux-um@lists.infradead.org, linux-block@vger.kernel.org, Richard Weinberger , Borislav Petkov , linux-nvme@lists.infradead.org, loongarch@lists.linux.dev, Jakub Kicinski , Thomas Gleixner , Andy Shevchenko , Mika Westerberg , Johannes Berg , linux-arm-kernel@lists.infradead.org, Jens Axboe , linux-mmc@vger.kernel.org, Thomas Bogendoerfer , Theodore Ts'o , linux-parisc@vger.kernel.org, Greg Kroah-Hartman , linux-usb@vger.kernel.org, Florian Westphal , linux-mips@vger.kernel.org, =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , Chuck Lever , linux-crypto@vger.kernel.org, Jan Kara , Thomas Graf , linux-fsdevel@vger.kernel.org, Andrew Morton , linuxppc-dev@lists.ozlabs.org, "David S . Miller" Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" The prandom_u32() function has been a deprecated inline wrapper around get_random_u32() for several releases now, and compiles down to the exact same code. Replace the deprecated wrapper with a direct call to the real function. The same also applies to get_random_int(), which is just a wrapper around get_random_u32(). Reviewed-by: Kees Cook Acked-by: Toke Høiland-Jørgensen # for sch_cake Acked-by: Chuck Lever # for nfsd Reviewed-by: Jan Kara # for ext4 Acked-by: Mika Westerberg # for thunderbolt Signed-off-by: Jason A. Donenfeld --- Documentation/networking/filter.rst | 2 +- arch/parisc/kernel/process.c | 2 +- arch/parisc/kernel/sys_parisc.c | 4 ++-- arch/s390/mm/mmap.c | 2 +- arch/x86/kernel/cpu/amd.c | 2 +- drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++--- drivers/gpu/drm/i915/selftests/i915_selftest.c | 2 +- drivers/gpu/drm/selftests/test-drm_buddy.c | 2 +- drivers/gpu/drm/selftests/test-drm_mm.c | 2 +- drivers/infiniband/hw/cxgb4/cm.c | 4 ++-- drivers/infiniband/hw/hfi1/tid_rdma.c | 2 +- drivers/infiniband/hw/mlx4/mad.c | 2 +- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 +- drivers/md/raid5-cache.c | 2 +- .../media/test-drivers/vivid/vivid-touch-cap.c | 4 ++-- drivers/misc/habanalabs/gaudi2/gaudi2.c | 2 +- drivers/mtd/nand/raw/nandsim.c | 2 +- drivers/net/bonding/bond_main.c | 2 +- drivers/net/ethernet/broadcom/cnic.c | 2 +- .../chelsio/inline_crypto/chtls/chtls_cm.c | 2 +- drivers/net/ethernet/rocker/rocker_main.c | 6 +++--- .../wireless/broadcom/brcm80211/brcmfmac/pno.c | 2 +- .../net/wireless/marvell/mwifiex/cfg80211.c | 4 ++-- .../net/wireless/microchip/wilc1000/cfg80211.c | 2 +- .../net/wireless/quantenna/qtnfmac/cfg80211.c | 2 +- drivers/net/wireless/ti/wlcore/main.c | 2 +- drivers/nvme/common/auth.c | 2 +- drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 4 ++-- drivers/target/iscsi/cxgbit/cxgbit_cm.c | 2 +- drivers/thunderbolt/xdomain.c | 2 +- drivers/video/fbdev/uvesafb.c | 2 +- fs/exfat/inode.c | 2 +- fs/ext4/ialloc.c | 2 +- fs/ext4/ioctl.c | 4 ++-- fs/ext4/mmp.c | 2 +- fs/f2fs/namei.c | 2 +- fs/fat/inode.c | 2 +- fs/nfsd/nfs4state.c | 4 ++-- fs/ntfs3/fslog.c | 6 +++--- fs/ubifs/journal.c | 2 +- fs/xfs/libxfs/xfs_ialloc.c | 2 +- fs/xfs/xfs_icache.c | 2 +- fs/xfs/xfs_log.c | 2 +- include/net/netfilter/nf_queue.h | 2 +- include/net/red.h | 2 +- include/net/sock.h | 2 +- kernel/bpf/bloom_filter.c | 2 +- kernel/bpf/core.c | 2 +- kernel/bpf/hashtab.c | 2 +- kernel/bpf/verifier.c | 2 +- kernel/kcsan/selftest.c | 2 +- lib/random32.c | 2 +- lib/reed_solomon/test_rslib.c | 6 +++--- lib/test_fprobe.c | 2 +- lib/test_kprobes.c | 2 +- lib/test_min_heap.c | 6 +++--- lib/test_rhashtable.c | 6 +++--- mm/shmem.c | 2 +- mm/slab.c | 2 +- net/802/garp.c | 2 +- net/802/mrp.c | 2 +- net/core/pktgen.c | 4 ++-- net/ipv4/route.c | 2 +- net/ipv4/tcp_cdg.c | 2 +- net/ipv4/udp.c | 2 +- net/ipv6/ip6_flowlabel.c | 2 +- net/ipv6/output_core.c | 2 +- net/netfilter/ipvs/ip_vs_conn.c | 2 +- net/netfilter/xt_statistic.c | 2 +- net/openvswitch/actions.c | 2 +- net/rds/bind.c | 2 +- net/sched/sch_cake.c | 2 +- net/sched/sch_netem.c | 18 +++++++++--------- net/sunrpc/auth_gss/gss_krb5_wrap.c | 4 ++-- net/sunrpc/xprt.c | 2 +- net/unix/af_unix.c | 2 +- 76 files changed, 105 insertions(+), 105 deletions(-) diff --git a/Documentation/networking/filter.rst b/Documentation/networking/filter.rst index 43cdc4d34745..f69da5074860 100644 --- a/Documentation/networking/filter.rst +++ b/Documentation/networking/filter.rst @@ -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 '#'. diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 7c37e09c92da..18c4f0e3e906 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -288,7 +288,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) diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c index 2b34294517a1..848b0702005d 100644 --- a/arch/parisc/kernel/sys_parisc.c +++ b/arch/parisc/kernel/sys_parisc.c @@ -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) diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c index 5980ce348832..3327c47bc181 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c @@ -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) diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 48276c0e479d..860b60273df3 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -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)) diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index 329ff75b80b9..7bd1861ddbdf 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -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); diff --git a/drivers/gpu/drm/i915/selftests/i915_selftest.c b/drivers/gpu/drm/i915/selftests/i915_selftest.c index c4e932368b37..39da0fb0d6d2 100644 --- a/drivers/gpu/drm/i915/selftests/i915_selftest.c +++ b/drivers/gpu/drm/i915/selftests/i915_selftest.c @@ -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 ? diff --git a/drivers/gpu/drm/selftests/test-drm_buddy.c b/drivers/gpu/drm/selftests/test-drm_buddy.c index aca0c491040f..6340a711773f 100644 --- a/drivers/gpu/drm/selftests/test-drm_buddy.c +++ b/drivers/gpu/drm/selftests/test-drm_buddy.c @@ -974,7 +974,7 @@ static int __init test_drm_buddy_init(void) int err; while (!random_seed) - random_seed = get_random_int(); + random_seed = get_random_u32(); pr_info("Testing DRM buddy manager (struct drm_buddy), with random_seed=0x%x\n", random_seed); diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c index b768b53c4aee..1dc41d73d17e 100644 --- a/drivers/gpu/drm/selftests/test-drm_mm.c +++ b/drivers/gpu/drm/selftests/test-drm_mm.c @@ -2463,7 +2463,7 @@ static int __init test_drm_mm_init(void) int err; while (!random_seed) - random_seed = get_random_int(); + random_seed = get_random_u32(); pr_info("Testing DRM range manager (struct drm_mm), with random_seed=0x%x max_iterations=%u max_prime=%u\n", random_seed, max_iterations, max_prime); diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c index 14392c942f49..499a425a3379 100644 --- a/drivers/infiniband/hw/cxgb4/cm.c +++ b/drivers/infiniband/hw/cxgb4/cm.c @@ -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)); diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c index 2a7abf7a1f7f..18b05ffb415a 100644 --- a/drivers/infiniband/hw/hfi1/tid_rdma.c +++ b/drivers/infiniband/hw/hfi1/tid_rdma.c @@ -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); } } diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c index d13ecbdd4391..a37cfac5e23f 100644 --- a/drivers/infiniband/hw/mlx4/mad.c +++ b/drivers/infiniband/hw/mlx4/mad.c @@ -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) diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c index fd9d7f2c4d64..a605cf66b83e 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -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; diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c index f4e1cc1ece43..5b0fc783bf01 100644 --- a/drivers/md/raid5-cache.c +++ b/drivers/md/raid5-cache.c @@ -2993,7 +2993,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); /* diff --git a/drivers/media/test-drivers/vivid/vivid-touch-cap.c b/drivers/media/test-drivers/vivid/vivid-touch-cap.c index 792660a85bc1..6cc32eb54f9d 100644 --- a/drivers/media/test-drivers/vivid/vivid-touch-cap.c +++ b/drivers/media/test-drivers/vivid/vivid-touch-cap.c @@ -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; @@ -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) { diff --git a/drivers/misc/habanalabs/gaudi2/gaudi2.c b/drivers/misc/habanalabs/gaudi2/gaudi2.c index 98336a1a84b0..413b284bf224 100644 --- a/drivers/misc/habanalabs/gaudi2/gaudi2.c +++ b/drivers/misc/habanalabs/gaudi2/gaudi2.c @@ -2917,7 +2917,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; } diff --git a/drivers/mtd/nand/raw/nandsim.c b/drivers/mtd/nand/raw/nandsim.c index 50bcf745e816..4bdaf4aa7007 100644 --- a/drivers/mtd/nand/raw/nandsim.c +++ b/drivers/mtd/nand/raw/nandsim.c @@ -1402,7 +1402,7 @@ 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_u32() < (1 << 22)) { int flips = 1; if (bitflips > 1) flips = prandom_u32_max(bitflips) + 1; diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 86d42306aa5e..c8543394a3bb 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -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); diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c index f597b313acaa..2198e35d9e18 100644 --- a/drivers/net/ethernet/broadcom/cnic.c +++ b/drivers/net/ethernet/broadcom/cnic.c @@ -4164,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; } diff --git a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c index ac452a0111a9..b71ce6c5b512 100644 --- a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c +++ b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c @@ -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); diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c index fc83ec23bd1d..8c3bbafabb07 100644 --- a/drivers/net/ethernet/rocker/rocker_main.c +++ b/drivers/net/ethernet/rocker/rocker_main.c @@ -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) { diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c index fabfbb0b40b0..374e1cc07a63 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c @@ -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_u32() & ~(mac_mask[i]); } /* Clear multi bit */ pfn_mac.mac[0] &= 0xFE; diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c index 134114ac1ac0..4fbb5c876b12 100644 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c @@ -238,7 +238,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, @@ -302,7 +302,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; diff --git a/drivers/net/wireless/microchip/wilc1000/cfg80211.c b/drivers/net/wireless/microchip/wilc1000/cfg80211.c index 3ac373d29d93..84b9d3454e57 100644 --- a/drivers/net/wireless/microchip/wilc1000/cfg80211.c +++ b/drivers/net/wireless/microchip/wilc1000/cfg80211.c @@ -1159,7 +1159,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; diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c index 1593e810b3ca..9c5416141d3c 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c +++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c @@ -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; diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c index 3e3922d4c788..28c0f06e311f 100644 --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c @@ -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 */ diff --git a/drivers/nvme/common/auth.c b/drivers/nvme/common/auth.c index 04bd28f17dcc..d90e4f0c08b7 100644 --- a/drivers/nvme/common/auth.c +++ b/drivers/nvme/common/auth.c @@ -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) diff --git a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c index 53d91bf9c12a..c07d2e3b4bcf 100644 --- a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c +++ b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c @@ -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, diff --git a/drivers/target/iscsi/cxgbit/cxgbit_cm.c b/drivers/target/iscsi/cxgbit/cxgbit_cm.c index 3336d2b78bf7..d9204c590d9a 100644 --- a/drivers/target/iscsi/cxgbit/cxgbit_cm.c +++ b/drivers/target/iscsi/cxgbit/cxgbit_cm.c @@ -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; diff --git a/drivers/thunderbolt/xdomain.c b/drivers/thunderbolt/xdomain.c index c31c0d94d8b3..76075e29696c 100644 --- a/drivers/thunderbolt/xdomain.c +++ b/drivers/thunderbolt/xdomain.c @@ -2438,7 +2438,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; } diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c index 4df6772802d7..285b83c20326 100644 --- a/drivers/video/fbdev/uvesafb.c +++ b/drivers/video/fbdev/uvesafb.c @@ -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)); diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c index a795437b86d0..5590a1e83126 100644 --- a/fs/exfat/inode.c +++ b/fs/exfat/inode.c @@ -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; diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 36d5bc595cc2..3956e24fa6e9 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c @@ -1279,7 +1279,7 @@ struct inode *__ext4_new_inode(struct user_namespace *mnt_userns, 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)) { diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 3cf3ec4b1c21..99df5b8ae149 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -453,8 +453,8 @@ static long swap_inode_boot_loader(struct super_block *sb, inode->i_ctime = inode_bl->i_ctime = current_time(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); diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c index 9af68a7ecdcf..588cb09c5291 100644 --- a/fs/ext4/mmp.c +++ b/fs/ext4/mmp.c @@ -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; diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index bf00d5057abb..939536982c3e 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c @@ -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; diff --git a/fs/fat/inode.c b/fs/fat/inode.c index a38238d75c08..1cbcc4608dc7 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -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; diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index c5d199d7e6b4..e10c16cd7881 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -4346,8 +4346,8 @@ void 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++; diff --git a/fs/ntfs3/fslog.c b/fs/ntfs3/fslog.c index e7c494005122..0d611a6c5511 100644 --- a/fs/ntfs3/fslog.c +++ b/fs/ntfs3/fslog.c @@ -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 @@ int log_replay(struct ntfs_inode *ni, bool *initialized) /* 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 @@ int log_replay(struct ntfs_inode *ni, bool *initialized) 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); diff --git a/fs/ubifs/journal.c b/fs/ubifs/journal.c index 75dab0ae3939..4619652046cf 100644 --- a/fs/ubifs/journal.c +++ b/fs/ubifs/journal.c @@ -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; } diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c index 7838b31126e2..94db50eb706a 100644 --- a/fs/xfs/libxfs/xfs_ialloc.c +++ b/fs/xfs/libxfs/xfs_ialloc.c @@ -805,7 +805,7 @@ xfs_ialloc_ag_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; diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c index 2bbe7916a998..eae7427062cf 100644 --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c @@ -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; diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index 386b0307aed8..ad8652cbf245 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c @@ -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; diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h index 980daa6e1e3a..c81021ab07aa 100644 --- a/include/net/netfilter/nf_queue.h +++ b/include/net/netfilter/nf_queue.h @@ -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) diff --git a/include/net/red.h b/include/net/red.h index be11dbd26492..56d0647d7356 100644 --- a/include/net/red.h +++ b/include/net/red.h @@ -364,7 +364,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, diff --git a/include/net/sock.h b/include/net/sock.h index d08cfe190a78..ca2b26686677 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -2091,7 +2091,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; } diff --git a/kernel/bpf/bloom_filter.c b/kernel/bpf/bloom_filter.c index b9ea539a5561..48ee750849f2 100644 --- a/kernel/bpf/bloom_filter.c +++ b/kernel/bpf/bloom_filter.c @@ -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; } diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index ade6b03b1d9b..f6b3486f001a 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -1211,7 +1211,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); diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c index 6c530a5e560a..1d36173598a0 100644 --- a/kernel/bpf/hashtab.c +++ b/kernel/bpf/hashtab.c @@ -546,7 +546,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); diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 3eadb14e090b..943af5abdc18 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -13317,7 +13317,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; diff --git a/kernel/kcsan/selftest.c b/kernel/kcsan/selftest.c index 75712959c84e..58b94deae5c0 100644 --- a/kernel/kcsan/selftest.c +++ b/kernel/kcsan/selftest.c @@ -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; } /* diff --git a/lib/random32.c b/lib/random32.c index d5d9029362cb..d4f19e1a69d4 100644 --- a/lib/random32.c +++ b/lib/random32.c @@ -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) { diff --git a/lib/reed_solomon/test_rslib.c b/lib/reed_solomon/test_rslib.c index 4d241bdc88aa..848e7eb5da92 100644 --- a/lib/reed_solomon/test_rslib.c +++ b/lib/reed_solomon/test_rslib.c @@ -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,7 +178,7 @@ 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 { @@ -206,7 +206,7 @@ static int get_rcw_we(struct rs_control *rs, struct wspace *ws, /* 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; diff --git a/lib/test_fprobe.c b/lib/test_fprobe.c index ed70637a2ffa..e0381b3ec410 100644 --- a/lib/test_fprobe.c +++ b/lib/test_fprobe.c @@ -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; diff --git a/lib/test_kprobes.c b/lib/test_kprobes.c index a5edc2ebc947..eeb1d728d974 100644 --- a/lib/test_kprobes.c +++ b/lib/test_kprobes.c @@ -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; } diff --git a/lib/test_min_heap.c b/lib/test_min_heap.c index d19c8080fd4d..7b01b4387cfb 100644 --- a/lib/test_min_heap.c +++ b/lib/test_min_heap.c @@ -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); diff --git a/lib/test_rhashtable.c b/lib/test_rhashtable.c index 5a1dd4736b56..b358a74ed7ed 100644 --- a/lib/test_rhashtable.c +++ b/lib/test_rhashtable.c @@ -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; diff --git a/mm/shmem.c b/mm/shmem.c index 42e5888bf84d..6f2cef73808d 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2330,7 +2330,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); diff --git a/mm/slab.c b/mm/slab.c index 10e96137b44f..36ed7182bad5 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -2380,7 +2380,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) { diff --git a/net/802/garp.c b/net/802/garp.c index f6012f8e59f0..c1bb67e25430 100644 --- a/net/802/garp.c +++ b/net/802/garp.c @@ -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 = (u64)msecs_to_jiffies(garp_join_time) * get_random_u32() >> 32; mod_timer(&app->join_timer, jiffies + delay); } diff --git a/net/802/mrp.c b/net/802/mrp.c index 35e04cc5390c..3e9fe9f5d9bf 100644 --- a/net/802/mrp.c +++ b/net/802/mrp.c @@ -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 = (u64)msecs_to_jiffies(mrp_join_time) * get_random_u32() >> 32; mod_timer(&app->join_timer, jiffies + delay); } diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 5ca4f953034c..c3763056c554 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -2464,7 +2464,7 @@ 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)); } @@ -2568,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]); } diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 795cbe1de912..1a37a07c7163 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -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; } diff --git a/net/ipv4/tcp_cdg.c b/net/ipv4/tcp_cdg.c index ddc7ba0554bd..efcd145f06db 100644 --- a/net/ipv4/tcp_cdg.c +++ b/net/ipv4/tcp_cdg.c @@ -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) { diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 560d9eadeaa5..1a5b2464548e 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -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 diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c index ceb85c67ce39..18481eb76a0a 100644 --- a/net/ipv6/ip6_flowlabel.c +++ b/net/ipv6/ip6_flowlabel.c @@ -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) diff --git a/net/ipv6/output_core.c b/net/ipv6/output_core.c index 2880dc7d9a49..2685c3f15e9d 100644 --- a/net/ipv6/output_core.c +++ b/net/ipv6/output_core.c @@ -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; diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c index fb67f1ca2495..8c04bb57dd6f 100644 --- a/net/netfilter/ipvs/ip_vs_conn.c +++ b/net/netfilter/ipvs/ip_vs_conn.c @@ -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) diff --git a/net/netfilter/xt_statistic.c b/net/netfilter/xt_statistic.c index 203e24ae472c..b26c1dcfc27b 100644 --- a/net/netfilter/xt_statistic.c +++ b/net/netfilter/xt_statistic.c @@ -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: diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 868db4669a29..ca3ebfdb3023 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -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; diff --git a/net/rds/bind.c b/net/rds/bind.c index 5b5fb4ca8d3e..052776ddcc34 100644 --- a/net/rds/bind.c +++ b/net/rds/bind.c @@ -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_u32(), 2); last = rover - 1; } diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c index 637ef1757931..48e3e05228a1 100644 --- a/net/sched/sch_cake.c +++ b/net/sched/sch_cake.c @@ -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) diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index 3ca320f1a031..88c1fa2e1d15 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -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; } @@ -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 diff --git a/net/sunrpc/auth_gss/gss_krb5_wrap.c b/net/sunrpc/auth_gss/gss_krb5_wrap.c index 5f96e75f9eec..48337687848c 100644 --- a/net/sunrpc/auth_gss/gss_krb5_wrap.c +++ b/net/sunrpc/auth_gss/gss_krb5_wrap.c @@ -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) { diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index f8fae7815649..9407007f47ae 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c @@ -1868,7 +1868,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 diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index bf338b782fc4..35bd8132113f 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -1116,7 +1116,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; -- 2.37.3 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 617ACC43217 for ; Fri, 7 Oct 2022 18:02:11 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9C71510E04C; Fri, 7 Oct 2022 18:02:10 +0000 (UTC) Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3327010E041 for ; Fri, 7 Oct 2022 18:02:06 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 392C3B8207A; Fri, 7 Oct 2022 18:02:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82876C4347C; Fri, 7 Oct 2022 18:01:56 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="euNgJxVq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1665165715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Oc6/1ZWlb4i/syn+rQnwKmyTrWzXgR+Sp5qDpXPBj58=; b=euNgJxVq1cTLH+PSu4x5kaDU1jWoeunaqhNAUeBuVfaIcPpI59rzVg4T1+9JNuGUdNExgP f1zdMVnZYnXRFhD5QOcswd+kRexoftkpI4LOukNnbJ1/pPDP8R4LAhscxd6h01MoUgtXFL iejlTcwWxyIuqyfxsLZ8OI/C+vckLCo= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 4d33910a (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Fri, 7 Oct 2022 18:01:55 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org, patches@lists.linux.dev Subject: [PATCH v4 4/6] treewide: use get_random_u32() when possible Date: Fri, 7 Oct 2022 12:01:05 -0600 Message-Id: <20221007180107.216067-5-Jason@zx2c4.com> In-Reply-To: <20221007180107.216067-1-Jason@zx2c4.com> References: <20221007180107.216067-1-Jason@zx2c4.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-wireless@vger.kernel.org, "Jason A. Donenfeld" , x86@kernel.org, Jan Kara , Vignesh Raghavendra , linux-doc@vger.kernel.org, Peter Zijlstra , Catalin Marinas , Dave Hansen , kernel-janitors@vger.kernel.org, KP Singh , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, Eric Dumazet , netdev@vger.kernel.org, linux-mtd@lists.infradead.org, kasan-dev@googlegroups.com, "H . Peter Anvin" , Andreas Noever , WANG Xuerui , Will Deacon , Christoph Hellwig , linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, Mauro Carvalho Chehab , Herbert Xu , Daniel Borkmann , Jonathan Corbet , linux-rdma@vger.kernel.org, Michael Ellerman , Helge Deller , Huacai Chen , Hugh Dickins , Russell King , Christophe Leroy , Jozsef Kadlecsik , Jason Gunthorpe , Dave Airlie , Ulf Hansson , Paolo Abeni , "James E . J . Bottomley" , Pablo Neira Ayuso , linux-media@vger.kernel.org, Marco Elver , Kees Cook , Yury Norov , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Heiko Carstens , linux-um@lists.infradead.org, linux-block@vger.kernel.org, Richard Weinberger , Borislav Petkov , linux-nvme@lists.infradead.org, loongarch@lists.linux.dev, Jakub Kicinski , Thomas Gleixner , Andy Shevchenko , Mika Westerberg , Johannes Berg , linux-arm-kernel@lists.infradead.org, Jens Axboe , linux-mmc@vger.kernel.org, Thomas Bogendoerfer , Theodore Ts'o , linux-parisc@vger.kernel.org, Greg Kroah-Hartman , linux-usb@vger.kernel.org, Florian Westphal , linux-mips@vger.kernel.org, =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , Chuck Lever , linux-crypto@vger.kernel.org, Jan Kara , Thomas Graf , linux-fsdevel@vger.kernel.org, Andrew Morton , linuxppc-dev@lists.ozlabs.org, "David S . Miller" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The prandom_u32() function has been a deprecated inline wrapper around get_random_u32() for several releases now, and compiles down to the exact same code. Replace the deprecated wrapper with a direct call to the real function. The same also applies to get_random_int(), which is just a wrapper around get_random_u32(). Reviewed-by: Kees Cook Acked-by: Toke Høiland-Jørgensen # for sch_cake Acked-by: Chuck Lever # for nfsd Reviewed-by: Jan Kara # for ext4 Acked-by: Mika Westerberg # for thunderbolt Signed-off-by: Jason A. Donenfeld --- Documentation/networking/filter.rst | 2 +- arch/parisc/kernel/process.c | 2 +- arch/parisc/kernel/sys_parisc.c | 4 ++-- arch/s390/mm/mmap.c | 2 +- arch/x86/kernel/cpu/amd.c | 2 +- drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++--- drivers/gpu/drm/i915/selftests/i915_selftest.c | 2 +- drivers/gpu/drm/selftests/test-drm_buddy.c | 2 +- drivers/gpu/drm/selftests/test-drm_mm.c | 2 +- drivers/infiniband/hw/cxgb4/cm.c | 4 ++-- drivers/infiniband/hw/hfi1/tid_rdma.c | 2 +- drivers/infiniband/hw/mlx4/mad.c | 2 +- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 +- drivers/md/raid5-cache.c | 2 +- .../media/test-drivers/vivid/vivid-touch-cap.c | 4 ++-- drivers/misc/habanalabs/gaudi2/gaudi2.c | 2 +- drivers/mtd/nand/raw/nandsim.c | 2 +- drivers/net/bonding/bond_main.c | 2 +- drivers/net/ethernet/broadcom/cnic.c | 2 +- .../chelsio/inline_crypto/chtls/chtls_cm.c | 2 +- drivers/net/ethernet/rocker/rocker_main.c | 6 +++--- .../wireless/broadcom/brcm80211/brcmfmac/pno.c | 2 +- .../net/wireless/marvell/mwifiex/cfg80211.c | 4 ++-- .../net/wireless/microchip/wilc1000/cfg80211.c | 2 +- .../net/wireless/quantenna/qtnfmac/cfg80211.c | 2 +- drivers/net/wireless/ti/wlcore/main.c | 2 +- drivers/nvme/common/auth.c | 2 +- drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 4 ++-- drivers/target/iscsi/cxgbit/cxgbit_cm.c | 2 +- drivers/thunderbolt/xdomain.c | 2 +- drivers/video/fbdev/uvesafb.c | 2 +- fs/exfat/inode.c | 2 +- fs/ext4/ialloc.c | 2 +- fs/ext4/ioctl.c | 4 ++-- fs/ext4/mmp.c | 2 +- fs/f2fs/namei.c | 2 +- fs/fat/inode.c | 2 +- fs/nfsd/nfs4state.c | 4 ++-- fs/ntfs3/fslog.c | 6 +++--- fs/ubifs/journal.c | 2 +- fs/xfs/libxfs/xfs_ialloc.c | 2 +- fs/xfs/xfs_icache.c | 2 +- fs/xfs/xfs_log.c | 2 +- include/net/netfilter/nf_queue.h | 2 +- include/net/red.h | 2 +- include/net/sock.h | 2 +- kernel/bpf/bloom_filter.c | 2 +- kernel/bpf/core.c | 2 +- kernel/bpf/hashtab.c | 2 +- kernel/bpf/verifier.c | 2 +- kernel/kcsan/selftest.c | 2 +- lib/random32.c | 2 +- lib/reed_solomon/test_rslib.c | 6 +++--- lib/test_fprobe.c | 2 +- lib/test_kprobes.c | 2 +- lib/test_min_heap.c | 6 +++--- lib/test_rhashtable.c | 6 +++--- mm/shmem.c | 2 +- mm/slab.c | 2 +- net/802/garp.c | 2 +- net/802/mrp.c | 2 +- net/core/pktgen.c | 4 ++-- net/ipv4/route.c | 2 +- net/ipv4/tcp_cdg.c | 2 +- net/ipv4/udp.c | 2 +- net/ipv6/ip6_flowlabel.c | 2 +- net/ipv6/output_core.c | 2 +- net/netfilter/ipvs/ip_vs_conn.c | 2 +- net/netfilter/xt_statistic.c | 2 +- net/openvswitch/actions.c | 2 +- net/rds/bind.c | 2 +- net/sched/sch_cake.c | 2 +- net/sched/sch_netem.c | 18 +++++++++--------- net/sunrpc/auth_gss/gss_krb5_wrap.c | 4 ++-- net/sunrpc/xprt.c | 2 +- net/unix/af_unix.c | 2 +- 76 files changed, 105 insertions(+), 105 deletions(-) diff --git a/Documentation/networking/filter.rst b/Documentation/networking/filter.rst index 43cdc4d34745..f69da5074860 100644 --- a/Documentation/networking/filter.rst +++ b/Documentation/networking/filter.rst @@ -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 '#'. diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 7c37e09c92da..18c4f0e3e906 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -288,7 +288,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) diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c index 2b34294517a1..848b0702005d 100644 --- a/arch/parisc/kernel/sys_parisc.c +++ b/arch/parisc/kernel/sys_parisc.c @@ -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) diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c index 5980ce348832..3327c47bc181 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c @@ -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) diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 48276c0e479d..860b60273df3 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -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)) diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index 329ff75b80b9..7bd1861ddbdf 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -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); diff --git a/drivers/gpu/drm/i915/selftests/i915_selftest.c b/drivers/gpu/drm/i915/selftests/i915_selftest.c index c4e932368b37..39da0fb0d6d2 100644 --- a/drivers/gpu/drm/i915/selftests/i915_selftest.c +++ b/drivers/gpu/drm/i915/selftests/i915_selftest.c @@ -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 ? diff --git a/drivers/gpu/drm/selftests/test-drm_buddy.c b/drivers/gpu/drm/selftests/test-drm_buddy.c index aca0c491040f..6340a711773f 100644 --- a/drivers/gpu/drm/selftests/test-drm_buddy.c +++ b/drivers/gpu/drm/selftests/test-drm_buddy.c @@ -974,7 +974,7 @@ static int __init test_drm_buddy_init(void) int err; while (!random_seed) - random_seed = get_random_int(); + random_seed = get_random_u32(); pr_info("Testing DRM buddy manager (struct drm_buddy), with random_seed=0x%x\n", random_seed); diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c index b768b53c4aee..1dc41d73d17e 100644 --- a/drivers/gpu/drm/selftests/test-drm_mm.c +++ b/drivers/gpu/drm/selftests/test-drm_mm.c @@ -2463,7 +2463,7 @@ static int __init test_drm_mm_init(void) int err; while (!random_seed) - random_seed = get_random_int(); + random_seed = get_random_u32(); pr_info("Testing DRM range manager (struct drm_mm), with random_seed=0x%x max_iterations=%u max_prime=%u\n", random_seed, max_iterations, max_prime); diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c index 14392c942f49..499a425a3379 100644 --- a/drivers/infiniband/hw/cxgb4/cm.c +++ b/drivers/infiniband/hw/cxgb4/cm.c @@ -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)); diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c index 2a7abf7a1f7f..18b05ffb415a 100644 --- a/drivers/infiniband/hw/hfi1/tid_rdma.c +++ b/drivers/infiniband/hw/hfi1/tid_rdma.c @@ -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); } } diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c index d13ecbdd4391..a37cfac5e23f 100644 --- a/drivers/infiniband/hw/mlx4/mad.c +++ b/drivers/infiniband/hw/mlx4/mad.c @@ -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) diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c index fd9d7f2c4d64..a605cf66b83e 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -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; diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c index f4e1cc1ece43..5b0fc783bf01 100644 --- a/drivers/md/raid5-cache.c +++ b/drivers/md/raid5-cache.c @@ -2993,7 +2993,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); /* diff --git a/drivers/media/test-drivers/vivid/vivid-touch-cap.c b/drivers/media/test-drivers/vivid/vivid-touch-cap.c index 792660a85bc1..6cc32eb54f9d 100644 --- a/drivers/media/test-drivers/vivid/vivid-touch-cap.c +++ b/drivers/media/test-drivers/vivid/vivid-touch-cap.c @@ -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; @@ -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) { diff --git a/drivers/misc/habanalabs/gaudi2/gaudi2.c b/drivers/misc/habanalabs/gaudi2/gaudi2.c index 98336a1a84b0..413b284bf224 100644 --- a/drivers/misc/habanalabs/gaudi2/gaudi2.c +++ b/drivers/misc/habanalabs/gaudi2/gaudi2.c @@ -2917,7 +2917,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; } diff --git a/drivers/mtd/nand/raw/nandsim.c b/drivers/mtd/nand/raw/nandsim.c index 50bcf745e816..4bdaf4aa7007 100644 --- a/drivers/mtd/nand/raw/nandsim.c +++ b/drivers/mtd/nand/raw/nandsim.c @@ -1402,7 +1402,7 @@ 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_u32() < (1 << 22)) { int flips = 1; if (bitflips > 1) flips = prandom_u32_max(bitflips) + 1; diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 86d42306aa5e..c8543394a3bb 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -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); diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c index f597b313acaa..2198e35d9e18 100644 --- a/drivers/net/ethernet/broadcom/cnic.c +++ b/drivers/net/ethernet/broadcom/cnic.c @@ -4164,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; } diff --git a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c index ac452a0111a9..b71ce6c5b512 100644 --- a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c +++ b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c @@ -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); diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c index fc83ec23bd1d..8c3bbafabb07 100644 --- a/drivers/net/ethernet/rocker/rocker_main.c +++ b/drivers/net/ethernet/rocker/rocker_main.c @@ -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) { diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c index fabfbb0b40b0..374e1cc07a63 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c @@ -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_u32() & ~(mac_mask[i]); } /* Clear multi bit */ pfn_mac.mac[0] &= 0xFE; diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c index 134114ac1ac0..4fbb5c876b12 100644 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c @@ -238,7 +238,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, @@ -302,7 +302,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; diff --git a/drivers/net/wireless/microchip/wilc1000/cfg80211.c b/drivers/net/wireless/microchip/wilc1000/cfg80211.c index 3ac373d29d93..84b9d3454e57 100644 --- a/drivers/net/wireless/microchip/wilc1000/cfg80211.c +++ b/drivers/net/wireless/microchip/wilc1000/cfg80211.c @@ -1159,7 +1159,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; diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c index 1593e810b3ca..9c5416141d3c 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c +++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c @@ -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; diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c index 3e3922d4c788..28c0f06e311f 100644 --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c @@ -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 */ diff --git a/drivers/nvme/common/auth.c b/drivers/nvme/common/auth.c index 04bd28f17dcc..d90e4f0c08b7 100644 --- a/drivers/nvme/common/auth.c +++ b/drivers/nvme/common/auth.c @@ -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) diff --git a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c index 53d91bf9c12a..c07d2e3b4bcf 100644 --- a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c +++ b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c @@ -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, diff --git a/drivers/target/iscsi/cxgbit/cxgbit_cm.c b/drivers/target/iscsi/cxgbit/cxgbit_cm.c index 3336d2b78bf7..d9204c590d9a 100644 --- a/drivers/target/iscsi/cxgbit/cxgbit_cm.c +++ b/drivers/target/iscsi/cxgbit/cxgbit_cm.c @@ -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; diff --git a/drivers/thunderbolt/xdomain.c b/drivers/thunderbolt/xdomain.c index c31c0d94d8b3..76075e29696c 100644 --- a/drivers/thunderbolt/xdomain.c +++ b/drivers/thunderbolt/xdomain.c @@ -2438,7 +2438,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; } diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c index 4df6772802d7..285b83c20326 100644 --- a/drivers/video/fbdev/uvesafb.c +++ b/drivers/video/fbdev/uvesafb.c @@ -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)); diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c index a795437b86d0..5590a1e83126 100644 --- a/fs/exfat/inode.c +++ b/fs/exfat/inode.c @@ -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; diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 36d5bc595cc2..3956e24fa6e9 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c @@ -1279,7 +1279,7 @@ struct inode *__ext4_new_inode(struct user_namespace *mnt_userns, 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)) { diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 3cf3ec4b1c21..99df5b8ae149 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -453,8 +453,8 @@ static long swap_inode_boot_loader(struct super_block *sb, inode->i_ctime = inode_bl->i_ctime = current_time(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); diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c index 9af68a7ecdcf..588cb09c5291 100644 --- a/fs/ext4/mmp.c +++ b/fs/ext4/mmp.c @@ -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; diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index bf00d5057abb..939536982c3e 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c @@ -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; diff --git a/fs/fat/inode.c b/fs/fat/inode.c index a38238d75c08..1cbcc4608dc7 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -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; diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index c5d199d7e6b4..e10c16cd7881 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -4346,8 +4346,8 @@ void 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++; diff --git a/fs/ntfs3/fslog.c b/fs/ntfs3/fslog.c index e7c494005122..0d611a6c5511 100644 --- a/fs/ntfs3/fslog.c +++ b/fs/ntfs3/fslog.c @@ -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 @@ int log_replay(struct ntfs_inode *ni, bool *initialized) /* 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 @@ int log_replay(struct ntfs_inode *ni, bool *initialized) 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); diff --git a/fs/ubifs/journal.c b/fs/ubifs/journal.c index 75dab0ae3939..4619652046cf 100644 --- a/fs/ubifs/journal.c +++ b/fs/ubifs/journal.c @@ -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; } diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c index 7838b31126e2..94db50eb706a 100644 --- a/fs/xfs/libxfs/xfs_ialloc.c +++ b/fs/xfs/libxfs/xfs_ialloc.c @@ -805,7 +805,7 @@ xfs_ialloc_ag_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; diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c index 2bbe7916a998..eae7427062cf 100644 --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c @@ -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; diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index 386b0307aed8..ad8652cbf245 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c @@ -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; diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h index 980daa6e1e3a..c81021ab07aa 100644 --- a/include/net/netfilter/nf_queue.h +++ b/include/net/netfilter/nf_queue.h @@ -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) diff --git a/include/net/red.h b/include/net/red.h index be11dbd26492..56d0647d7356 100644 --- a/include/net/red.h +++ b/include/net/red.h @@ -364,7 +364,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, diff --git a/include/net/sock.h b/include/net/sock.h index d08cfe190a78..ca2b26686677 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -2091,7 +2091,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; } diff --git a/kernel/bpf/bloom_filter.c b/kernel/bpf/bloom_filter.c index b9ea539a5561..48ee750849f2 100644 --- a/kernel/bpf/bloom_filter.c +++ b/kernel/bpf/bloom_filter.c @@ -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; } diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index ade6b03b1d9b..f6b3486f001a 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -1211,7 +1211,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); diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c index 6c530a5e560a..1d36173598a0 100644 --- a/kernel/bpf/hashtab.c +++ b/kernel/bpf/hashtab.c @@ -546,7 +546,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); diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 3eadb14e090b..943af5abdc18 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -13317,7 +13317,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; diff --git a/kernel/kcsan/selftest.c b/kernel/kcsan/selftest.c index 75712959c84e..58b94deae5c0 100644 --- a/kernel/kcsan/selftest.c +++ b/kernel/kcsan/selftest.c @@ -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; } /* diff --git a/lib/random32.c b/lib/random32.c index d5d9029362cb..d4f19e1a69d4 100644 --- a/lib/random32.c +++ b/lib/random32.c @@ -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) { diff --git a/lib/reed_solomon/test_rslib.c b/lib/reed_solomon/test_rslib.c index 4d241bdc88aa..848e7eb5da92 100644 --- a/lib/reed_solomon/test_rslib.c +++ b/lib/reed_solomon/test_rslib.c @@ -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,7 +178,7 @@ 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 { @@ -206,7 +206,7 @@ static int get_rcw_we(struct rs_control *rs, struct wspace *ws, /* 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; diff --git a/lib/test_fprobe.c b/lib/test_fprobe.c index ed70637a2ffa..e0381b3ec410 100644 --- a/lib/test_fprobe.c +++ b/lib/test_fprobe.c @@ -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; diff --git a/lib/test_kprobes.c b/lib/test_kprobes.c index a5edc2ebc947..eeb1d728d974 100644 --- a/lib/test_kprobes.c +++ b/lib/test_kprobes.c @@ -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; } diff --git a/lib/test_min_heap.c b/lib/test_min_heap.c index d19c8080fd4d..7b01b4387cfb 100644 --- a/lib/test_min_heap.c +++ b/lib/test_min_heap.c @@ -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); diff --git a/lib/test_rhashtable.c b/lib/test_rhashtable.c index 5a1dd4736b56..b358a74ed7ed 100644 --- a/lib/test_rhashtable.c +++ b/lib/test_rhashtable.c @@ -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; diff --git a/mm/shmem.c b/mm/shmem.c index 42e5888bf84d..6f2cef73808d 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2330,7 +2330,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); diff --git a/mm/slab.c b/mm/slab.c index 10e96137b44f..36ed7182bad5 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -2380,7 +2380,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) { diff --git a/net/802/garp.c b/net/802/garp.c index f6012f8e59f0..c1bb67e25430 100644 --- a/net/802/garp.c +++ b/net/802/garp.c @@ -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 = (u64)msecs_to_jiffies(garp_join_time) * get_random_u32() >> 32; mod_timer(&app->join_timer, jiffies + delay); } diff --git a/net/802/mrp.c b/net/802/mrp.c index 35e04cc5390c..3e9fe9f5d9bf 100644 --- a/net/802/mrp.c +++ b/net/802/mrp.c @@ -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 = (u64)msecs_to_jiffies(mrp_join_time) * get_random_u32() >> 32; mod_timer(&app->join_timer, jiffies + delay); } diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 5ca4f953034c..c3763056c554 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -2464,7 +2464,7 @@ 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)); } @@ -2568,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]); } diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 795cbe1de912..1a37a07c7163 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -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; } diff --git a/net/ipv4/tcp_cdg.c b/net/ipv4/tcp_cdg.c index ddc7ba0554bd..efcd145f06db 100644 --- a/net/ipv4/tcp_cdg.c +++ b/net/ipv4/tcp_cdg.c @@ -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) { diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 560d9eadeaa5..1a5b2464548e 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -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 diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c index ceb85c67ce39..18481eb76a0a 100644 --- a/net/ipv6/ip6_flowlabel.c +++ b/net/ipv6/ip6_flowlabel.c @@ -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) diff --git a/net/ipv6/output_core.c b/net/ipv6/output_core.c index 2880dc7d9a49..2685c3f15e9d 100644 --- a/net/ipv6/output_core.c +++ b/net/ipv6/output_core.c @@ -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; diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c index fb67f1ca2495..8c04bb57dd6f 100644 --- a/net/netfilter/ipvs/ip_vs_conn.c +++ b/net/netfilter/ipvs/ip_vs_conn.c @@ -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) diff --git a/net/netfilter/xt_statistic.c b/net/netfilter/xt_statistic.c index 203e24ae472c..b26c1dcfc27b 100644 --- a/net/netfilter/xt_statistic.c +++ b/net/netfilter/xt_statistic.c @@ -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: diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 868db4669a29..ca3ebfdb3023 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -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; diff --git a/net/rds/bind.c b/net/rds/bind.c index 5b5fb4ca8d3e..052776ddcc34 100644 --- a/net/rds/bind.c +++ b/net/rds/bind.c @@ -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_u32(), 2); last = rover - 1; } diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c index 637ef1757931..48e3e05228a1 100644 --- a/net/sched/sch_cake.c +++ b/net/sched/sch_cake.c @@ -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) diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index 3ca320f1a031..88c1fa2e1d15 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -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; } @@ -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 diff --git a/net/sunrpc/auth_gss/gss_krb5_wrap.c b/net/sunrpc/auth_gss/gss_krb5_wrap.c index 5f96e75f9eec..48337687848c 100644 --- a/net/sunrpc/auth_gss/gss_krb5_wrap.c +++ b/net/sunrpc/auth_gss/gss_krb5_wrap.c @@ -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) { diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index f8fae7815649..9407007f47ae 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c @@ -1868,7 +1868,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 diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index bf338b782fc4..35bd8132113f 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -1116,7 +1116,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; -- 2.37.3