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 5D71DC4332F for ; Thu, 6 Oct 2022 13:25:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230404AbiJFNZz (ORCPT ); Thu, 6 Oct 2022 09:25:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230111AbiJFNZx (ORCPT ); Thu, 6 Oct 2022 09:25:53 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59E68A8CDD; Thu, 6 Oct 2022 06:25:52 -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 CDEDE6199F; Thu, 6 Oct 2022 13:25:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B6A38C433D6; Thu, 6 Oct 2022 13:25:46 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="U19BJ3bB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1665062745; 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; bh=7dFj46iv6B3wpMLAkzxu2+UZUtW66eQt4bdRtLsdjWc=; b=U19BJ3bBONmCvTPAh8uyTTfbJMDEIORNPRa/gw0p0oqINVUGtieIgpXVc1s6oQT1xpTUGu EKtfsElTXyRWuUz+KDHImGkvljaIMeDpXlV/PnfxnGCQYNTmUia1TE+L96QKJjYd8/6F35 8Pc27xLTY3BvRaGlSceTp3zdkfZHO+0= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id b30e7dab (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Thu, 6 Oct 2022 13:25:44 +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 , =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , Christoph Hellwig , Daniel Borkmann , Dave Airlie , Dave Hansen , "David S . Miller" , Eric Dumazet , Florian Westphal , Greg Kroah-Hartman , "H . Peter Anvin" , Herbert Xu , 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 , Theodore Ts'o , Thomas Gleixner , Thomas Graf , Ulf Hansson , Vignesh Raghavendra , Yury Norov , dri-devel@lists.freedesktop.org, kasan-dev@googlegroups.com, kernel-janitors@vger.kernel.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-mm@kvack.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org, linux-usb@vger.kernel.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 0/5] treewide cleanup of random integer usage Date: Thu, 6 Oct 2022 07:25:05 -0600 Message-Id: <20221006132510.23374-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 [Posting v2 right away, because I CC'd too many people for v1, and email systems worldwide exploded.] Hi folks, This is a five part treewide cleanup of random integer handling. The rules for random integers are: - If you want a secure or an insecure random u64, use get_random_u64(). - If you want a secure or an insecure random u32, use get_random_u32(). * The old function prandom_u32() has been deprecated for a while now and is just a wrapper around get_random_u32(). - If you want a secure or an insecure random u16, use get_random_u16(). - If you want a secure or an insecure random u8, use get_random_u8(). - If you want secure or insecure random bytes, use get_random_bytes(). * The old function prandom_bytes() has been deprecated for a while now and has long been a wrapper around get_random_bytes(). - If you want a non-uniform random u32, u16, or u8 bounded by a certain open interval maximum, use prandom_u32_max(). * I say "non-uniform", because it doesn't do any rejection sampling or divisions. Hence, it stays within the prandom_* namespace. These rules ought to be applied uniformly, so that we can clean up the deprecated functions, and earn the benefits of using the modern functions. In particular, in addition to the boring substitutions, this patchset accomplishes a few nice effects: - By using prandom_u32_max() with an upper-bound that the compiler can prove at compile-time is ≤65536 or ≤256, internally get_random_u16() or get_random_u8() is used, which wastes fewer batched random bytes, and hence has higher throughput. - By using prandom_u32_max() instead of %, when the upper-bound is not a constant, division is still avoided, because prandom_u32_max() uses a faster multiplication-based trick instead. - By using get_random_u16() or get_random_u8() in cases where the return value is intended to indeed be a u16 or a u8, we waste fewer batched random bytes, and hence have higher throughput. So, based on those rules and benefits from following them, this patchset breaks down into the following five steps, which were done mostly manually: 1) Replace `prandom_u32() % max` and variants thereof with prandom_u32_max(max). 2) Replace `(type)get_random_u32()` and variants thereof with get_random_u16() or get_random_u8(). I took the pains to actually look and see what every lvalue type was across the entire tree. 3) Replace remaining deprecated uses of prandom_u32() with get_random_u32(). 4) Replace remaining deprecated uses of prandom_bytes() with get_random_bytes(). 5) Remove the deprecated and now-unused prandom_u32() and prandom_bytes() inline wrapper functions. I was thinking of taking this through my random.git tree (on which this series is currently based) and submitting it near the end of the merge window, or waiting for the very end of the 6.1 cycle when there will be the fewest new patches brewing. If somebody with some treewide-cleanup experience might share some wisdom about what the best timing usually winds up being, I'm all ears. Please take a look! Thanks, Jason Cc: Andreas Noever Cc: Andrew Morton Cc: Andy Shevchenko Cc: Borislav Petkov Cc: Christoph Böhmwalder Cc: Christoph Hellwig Cc: Daniel Borkmann Cc: Dave Airlie Cc: Dave Hansen Cc: David S. Miller Cc: Eric Dumazet Cc: Florian Westphal Cc: Greg Kroah-Hartman , Cc: H. Peter Anvin Cc: Herbert Xu Cc: Hugh Dickins Cc: Jakub Kicinski Cc: James E.J. Bottomley Cc: Jan Kara Cc: Jason Gunthorpe Cc: Jens Axboe Cc: Johannes Berg Cc: Jonathan Corbet Cc: Jozsef Kadlecsik Cc: KP Singh Cc: Kees Cook Cc: Marco Elver Cc: Mauro Carvalho Chehab Cc: Michael Ellerman Cc: Pablo Neira Ayuso Cc: Paolo Abeni Cc: Theodore Ts'o Cc: Thomas Gleixner Cc: Thomas Graf Cc: Ulf Hansson Cc: Vignesh Raghavendra Cc: Yury Norov Cc: dri-devel@lists.freedesktop.org Cc: kasan-dev@googlegroups.com Cc: kernel-janitors@vger.kernel.org Cc: linux-block@vger.kernel.org Cc: linux-crypto@vger.kernel.org Cc: linux-doc@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org Cc: linux-media@vger.kernel.org Cc: linux-mm@kvack.org Cc: linux-mmc@vger.kernel.org Cc: linux-mtd@lists.infradead.org Cc: linux-nvme@lists.infradead.org Cc: linux-rdma@vger.kernel.org Cc: linux-usb@vger.kernel.org Cc: linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org Jason A. Donenfeld (5): treewide: use prandom_u32_max() when possible treewide: use get_random_{u8,u16}() when possible treewide: use get_random_u32() when possible treewide: use get_random_bytes when possible prandom: remove unused functions Documentation/networking/filter.rst | 2 +- arch/powerpc/crypto/crc-vpmsum_test.c | 2 +- arch/x86/mm/pat/cpa-test.c | 4 +- block/blk-crypto-fallback.c | 2 +- crypto/async_tx/raid6test.c | 2 +- crypto/testmgr.c | 94 +++++++++---------- drivers/block/drbd/drbd_receiver.c | 4 +- drivers/dma/dmatest.c | 2 +- drivers/infiniband/core/cma.c | 2 +- drivers/infiniband/hw/cxgb4/cm.c | 4 +- drivers/infiniband/hw/cxgb4/id_table.c | 4 +- drivers/infiniband/hw/hfi1/tid_rdma.c | 2 +- drivers/infiniband/hw/hns/hns_roce_ah.c | 5 +- drivers/infiniband/hw/mlx4/mad.c | 2 +- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 +- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 3 +- drivers/md/raid5-cache.c | 2 +- drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 2 +- .../media/test-drivers/vivid/vivid-radio-rx.c | 4 +- drivers/mmc/core/core.c | 4 +- drivers/mmc/host/dw_mmc.c | 2 +- drivers/mtd/nand/raw/nandsim.c | 8 +- drivers/mtd/tests/mtd_nandecctest.c | 12 +-- drivers/mtd/tests/speedtest.c | 2 +- drivers/mtd/tests/stresstest.c | 19 +--- drivers/mtd/ubi/debug.c | 2 +- drivers/mtd/ubi/debug.h | 6 +- drivers/net/bonding/bond_main.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +- drivers/net/ethernet/broadcom/cnic.c | 5 +- .../chelsio/inline_crypto/chtls/chtls_cm.c | 4 +- .../chelsio/inline_crypto/chtls/chtls_io.c | 4 +- drivers/net/ethernet/rocker/rocker_main.c | 8 +- drivers/net/hamradio/baycom_epp.c | 2 +- drivers/net/hamradio/hdlcdrv.c | 2 +- drivers/net/hamradio/yam.c | 2 +- drivers/net/phy/at803x.c | 2 +- drivers/net/wireguard/selftest/allowedips.c | 16 ++-- .../broadcom/brcm80211/brcmfmac/p2p.c | 2 +- .../net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 2 +- .../net/wireless/marvell/mwifiex/cfg80211.c | 4 +- .../wireless/microchip/wilc1000/cfg80211.c | 2 +- .../net/wireless/quantenna/qtnfmac/cfg80211.c | 2 +- drivers/nvme/common/auth.c | 2 +- drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 4 +- drivers/scsi/fcoe/fcoe_ctlr.c | 4 +- drivers/scsi/lpfc/lpfc_hbadisc.c | 6 +- drivers/scsi/qedi/qedi_main.c | 2 +- drivers/target/iscsi/cxgbit/cxgbit_cm.c | 2 +- drivers/thunderbolt/xdomain.c | 2 +- drivers/video/fbdev/uvesafb.c | 2 +- fs/ceph/inode.c | 2 +- fs/ceph/mdsmap.c | 2 +- fs/exfat/inode.c | 2 +- fs/ext2/ialloc.c | 3 +- fs/ext4/ialloc.c | 7 +- fs/ext4/ioctl.c | 4 +- fs/ext4/mmp.c | 2 +- fs/ext4/super.c | 7 +- fs/f2fs/gc.c | 2 +- fs/f2fs/namei.c | 2 +- fs/f2fs/segment.c | 8 +- fs/fat/inode.c | 2 +- fs/nfsd/nfs4state.c | 4 +- fs/ubifs/debug.c | 10 +- fs/ubifs/journal.c | 2 +- fs/ubifs/lpt_commit.c | 14 +-- fs/ubifs/tnc_commit.c | 2 +- fs/xfs/libxfs/xfs_alloc.c | 2 +- fs/xfs/libxfs/xfs_ialloc.c | 4 +- fs/xfs/xfs_error.c | 2 +- fs/xfs/xfs_icache.c | 2 +- fs/xfs/xfs_log.c | 2 +- include/linux/prandom.h | 12 --- include/net/netfilter/nf_queue.h | 2 +- include/net/red.h | 2 +- include/net/sock.h | 2 +- kernel/kcsan/selftest.c | 4 +- kernel/time/clocksource.c | 2 +- lib/fault-inject.c | 2 +- lib/find_bit_benchmark.c | 4 +- lib/random32.c | 4 +- lib/reed_solomon/test_rslib.c | 12 +-- lib/sbitmap.c | 4 +- lib/test_fprobe.c | 2 +- lib/test_kprobes.c | 2 +- lib/test_list_sort.c | 2 +- lib/test_objagg.c | 2 +- lib/test_rhashtable.c | 6 +- lib/test_vmalloc.c | 19 +--- lib/uuid.c | 2 +- mm/shmem.c | 2 +- net/802/garp.c | 2 +- net/802/mrp.c | 2 +- net/ceph/mon_client.c | 2 +- net/ceph/osd_client.c | 2 +- net/core/neighbour.c | 2 +- net/core/pktgen.c | 47 +++++----- net/core/stream.c | 2 +- net/dccp/ipv4.c | 4 +- net/ipv4/datagram.c | 2 +- net/ipv4/igmp.c | 6 +- net/ipv4/inet_connection_sock.c | 2 +- net/ipv4/inet_hashtables.c | 2 +- net/ipv4/ip_output.c | 2 +- net/ipv4/route.c | 2 +- net/ipv4/tcp_cdg.c | 2 +- net/ipv4/tcp_ipv4.c | 4 +- net/ipv4/udp.c | 2 +- net/ipv6/addrconf.c | 8 +- net/ipv6/ip6_flowlabel.c | 2 +- net/ipv6/mcast.c | 10 +- net/ipv6/output_core.c | 2 +- net/mac80211/rc80211_minstrel_ht.c | 2 +- net/mac80211/scan.c | 2 +- net/netfilter/ipvs/ip_vs_conn.c | 2 +- net/netfilter/ipvs/ip_vs_twos.c | 4 +- net/netfilter/nf_nat_core.c | 4 +- net/netfilter/xt_statistic.c | 2 +- net/openvswitch/actions.c | 2 +- net/packet/af_packet.c | 2 +- net/rds/bind.c | 2 +- net/sched/act_gact.c | 2 +- net/sched/act_sample.c | 2 +- net/sched/sch_cake.c | 8 +- net/sched/sch_netem.c | 22 ++--- net/sched/sch_pie.c | 2 +- net/sched/sch_sfb.c | 2 +- net/sctp/socket.c | 4 +- net/sunrpc/auth_gss/gss_krb5_wrap.c | 4 +- net/sunrpc/cache.c | 2 +- net/sunrpc/xprt.c | 2 +- net/sunrpc/xprtsock.c | 2 +- net/tipc/socket.c | 2 +- net/unix/af_unix.c | 2 +- net/xfrm/xfrm_state.c | 2 +- 136 files changed, 305 insertions(+), 342 deletions(-) -- 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 82F07C433F5 for ; Thu, 6 Oct 2022 13:26:32 +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: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:In-Reply-To:References: List-Owner; bh=Fxl8ExRjWvKJ7phLUZ+dN8hmrlAbhN52u6+wKBpk1a0=; b=OkHKCSgsDTUWjW VUggzjIoDnmuIsrOYKGtud/MWZHzSBMu7O8LIRjUT2QFv7aX2+UmKbd/nHXzMB9AUnO1Dx/NVZK57 H2kQV7RAwDexQh7AAxSVr1xpcEY/KhaNClDwPtFC/AjayYS9eLYS+SOuUIoTKyMA5fg64XFN+XZEc fdnArFHm63TgHIcI3kCtN7+ZbVHiZSu8xXuVSzJ5dmGcAA9AbZvyC2y0RmGScoE5nOLQTdTMIZq0E Vjo9lNoNzzxBfDgrRDDk+fUbhTpVBL+mTjifmNfUZiXTdcDDHZEhxO4jS67Nc1sRt1S5c52H9SLsA TVyqpfTyOCFDgHUqYnuw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ogQsw-002ePJ-BP; Thu, 06 Oct 2022 13:25:58 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ogQss-002eM9-Kh; Thu, 06 Oct 2022 13:25:56 +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 dfw.source.kernel.org (Postfix) with ESMTPS id C2CCF6199D; Thu, 6 Oct 2022 13:25:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B6A38C433D6; Thu, 6 Oct 2022 13:25:46 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="U19BJ3bB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1665062745; 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; bh=7dFj46iv6B3wpMLAkzxu2+UZUtW66eQt4bdRtLsdjWc=; b=U19BJ3bBONmCvTPAh8uyTTfbJMDEIORNPRa/gw0p0oqINVUGtieIgpXVc1s6oQT1xpTUGu EKtfsElTXyRWuUz+KDHImGkvljaIMeDpXlV/PnfxnGCQYNTmUia1TE+L96QKJjYd8/6F35 8Pc27xLTY3BvRaGlSceTp3zdkfZHO+0= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id b30e7dab (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Thu, 6 Oct 2022 13:25:44 +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 , =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , Christoph Hellwig , Daniel Borkmann , Dave Airlie , Dave Hansen , "David S . Miller" , Eric Dumazet , Florian Westphal , Greg Kroah-Hartman , "H . Peter Anvin" , Herbert Xu , 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 , Theodore Ts'o , Thomas Gleixner , Thomas Graf , Ulf Hansson , Vignesh Raghavendra , Yury Norov , dri-devel@lists.freedesktop.org, kasan-dev@googlegroups.com, kernel-janitors@vger.kernel.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-mm@kvack.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org, linux-usb@vger.kernel.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 0/5] treewide cleanup of random integer usage Date: Thu, 6 Oct 2022 07:25:05 -0600 Message-Id: <20221006132510.23374-1-Jason@zx2c4.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221006_062554_768653_B38AA895 X-CRM114-Status: GOOD ( 23.38 ) 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 W1Bvc3RpbmcgdjIgcmlnaHQgYXdheSwgYmVjYXVzZSBJIENDJ2QgdG9vIG1hbnkgcGVvcGxlIGZv ciB2MSwgYW5kIGVtYWlsCiBzeXN0ZW1zIHdvcmxkd2lkZSBleHBsb2RlZC5dCgpIaSBmb2xrcywK ClRoaXMgaXMgYSBmaXZlIHBhcnQgdHJlZXdpZGUgY2xlYW51cCBvZiByYW5kb20gaW50ZWdlciBo YW5kbGluZy4gVGhlCnJ1bGVzIGZvciByYW5kb20gaW50ZWdlcnMgYXJlOgoKLSBJZiB5b3Ugd2Fu dCBhIHNlY3VyZSBvciBhbiBpbnNlY3VyZSByYW5kb20gdTY0LCB1c2UgZ2V0X3JhbmRvbV91NjQo KS4KLSBJZiB5b3Ugd2FudCBhIHNlY3VyZSBvciBhbiBpbnNlY3VyZSByYW5kb20gdTMyLCB1c2Ug Z2V0X3JhbmRvbV91MzIoKS4KICAqIFRoZSBvbGQgZnVuY3Rpb24gcHJhbmRvbV91MzIoKSBoYXMg YmVlbiBkZXByZWNhdGVkIGZvciBhIHdoaWxlIG5vdwogICAgYW5kIGlzIGp1c3QgYSB3cmFwcGVy IGFyb3VuZCBnZXRfcmFuZG9tX3UzMigpLgotIElmIHlvdSB3YW50IGEgc2VjdXJlIG9yIGFuIGlu c2VjdXJlIHJhbmRvbSB1MTYsIHVzZSBnZXRfcmFuZG9tX3UxNigpLgotIElmIHlvdSB3YW50IGEg c2VjdXJlIG9yIGFuIGluc2VjdXJlIHJhbmRvbSB1OCwgdXNlIGdldF9yYW5kb21fdTgoKS4KLSBJ ZiB5b3Ugd2FudCBzZWN1cmUgb3IgaW5zZWN1cmUgcmFuZG9tIGJ5dGVzLCB1c2UgZ2V0X3JhbmRv bV9ieXRlcygpLgogICogVGhlIG9sZCBmdW5jdGlvbiBwcmFuZG9tX2J5dGVzKCkgaGFzIGJlZW4g ZGVwcmVjYXRlZCBmb3IgYSB3aGlsZSBub3cKICAgIGFuZCBoYXMgbG9uZyBiZWVuIGEgd3JhcHBl ciBhcm91bmQgZ2V0X3JhbmRvbV9ieXRlcygpLgotIElmIHlvdSB3YW50IGEgbm9uLXVuaWZvcm0g cmFuZG9tIHUzMiwgdTE2LCBvciB1OCBib3VuZGVkIGJ5IGEgY2VydGFpbgogIG9wZW4gaW50ZXJ2 YWwgbWF4aW11bSwgdXNlIHByYW5kb21fdTMyX21heCgpLgogICogSSBzYXkgIm5vbi11bmlmb3Jt IiwgYmVjYXVzZSBpdCBkb2Vzbid0IGRvIGFueSByZWplY3Rpb24gc2FtcGxpbmcgb3IKICAgIGRp dmlzaW9ucy4gSGVuY2UsIGl0IHN0YXlzIHdpdGhpbiB0aGUgcHJhbmRvbV8qIG5hbWVzcGFjZS4K ClRoZXNlIHJ1bGVzIG91Z2h0IHRvIGJlIGFwcGxpZWQgdW5pZm9ybWx5LCBzbyB0aGF0IHdlIGNh biBjbGVhbiB1cCB0aGUKZGVwcmVjYXRlZCBmdW5jdGlvbnMsIGFuZCBlYXJuIHRoZSBiZW5lZml0 cyBvZiB1c2luZyB0aGUgbW9kZXJuCmZ1bmN0aW9ucy4gSW4gcGFydGljdWxhciwgaW4gYWRkaXRp b24gdG8gdGhlIGJvcmluZyBzdWJzdGl0dXRpb25zLCB0aGlzCnBhdGNoc2V0IGFjY29tcGxpc2hl cyBhIGZldyBuaWNlIGVmZmVjdHM6CgotIEJ5IHVzaW5nIHByYW5kb21fdTMyX21heCgpIHdpdGgg YW4gdXBwZXItYm91bmQgdGhhdCB0aGUgY29tcGlsZXIgY2FuCiAgcHJvdmUgYXQgY29tcGlsZS10 aW1lIGlzIOKJpDY1NTM2IG9yIOKJpDI1NiwgaW50ZXJuYWxseSBnZXRfcmFuZG9tX3UxNigpCiAg b3IgZ2V0X3JhbmRvbV91OCgpIGlzIHVzZWQsIHdoaWNoIHdhc3RlcyBmZXdlciBiYXRjaGVkIHJh bmRvbSBieXRlcywKICBhbmQgaGVuY2UgaGFzIGhpZ2hlciB0aHJvdWdocHV0LgoKLSBCeSB1c2lu ZyBwcmFuZG9tX3UzMl9tYXgoKSBpbnN0ZWFkIG9mICUsIHdoZW4gdGhlIHVwcGVyLWJvdW5kIGlz IG5vdCBhCiAgY29uc3RhbnQsIGRpdmlzaW9uIGlzIHN0aWxsIGF2b2lkZWQsIGJlY2F1c2UgcHJh bmRvbV91MzJfbWF4KCkgdXNlcwogIGEgZmFzdGVyIG11bHRpcGxpY2F0aW9uLWJhc2VkIHRyaWNr IGluc3RlYWQuCgotIEJ5IHVzaW5nIGdldF9yYW5kb21fdTE2KCkgb3IgZ2V0X3JhbmRvbV91OCgp IGluIGNhc2VzIHdoZXJlIHRoZSByZXR1cm4KICB2YWx1ZSBpcyBpbnRlbmRlZCB0byBpbmRlZWQg YmUgYSB1MTYgb3IgYSB1OCwgd2Ugd2FzdGUgZmV3ZXIgYmF0Y2hlZAogIHJhbmRvbSBieXRlcywg YW5kIGhlbmNlIGhhdmUgaGlnaGVyIHRocm91Z2hwdXQuCgpTbywgYmFzZWQgb24gdGhvc2UgcnVs ZXMgYW5kIGJlbmVmaXRzIGZyb20gZm9sbG93aW5nIHRoZW0sIHRoaXMgcGF0Y2hzZXQKYnJlYWtz IGRvd24gaW50byB0aGUgZm9sbG93aW5nIGZpdmUgc3RlcHMsIHdoaWNoIHdlcmUgZG9uZSBtb3N0 bHkKbWFudWFsbHk6CgoxKSBSZXBsYWNlIGBwcmFuZG9tX3UzMigpICUgbWF4YCBhbmQgdmFyaWFu dHMgdGhlcmVvZiB3aXRoCiAgIHByYW5kb21fdTMyX21heChtYXgpLgoKMikgUmVwbGFjZSBgKHR5 cGUpZ2V0X3JhbmRvbV91MzIoKWAgYW5kIHZhcmlhbnRzIHRoZXJlb2Ygd2l0aAogICBnZXRfcmFu ZG9tX3UxNigpIG9yIGdldF9yYW5kb21fdTgoKS4gSSB0b29rIHRoZSBwYWlucyB0byBhY3R1YWxs eQogICBsb29rIGFuZCBzZWUgd2hhdCBldmVyeSBsdmFsdWUgdHlwZSB3YXMgYWNyb3NzIHRoZSBl bnRpcmUgdHJlZS4KCjMpIFJlcGxhY2UgcmVtYWluaW5nIGRlcHJlY2F0ZWQgdXNlcyBvZiBwcmFu ZG9tX3UzMigpIHdpdGgKICAgZ2V0X3JhbmRvbV91MzIoKS4gCgo0KSBSZXBsYWNlIHJlbWFpbmlu ZyBkZXByZWNhdGVkIHVzZXMgb2YgcHJhbmRvbV9ieXRlcygpIHdpdGgKICAgZ2V0X3JhbmRvbV9i eXRlcygpLgoKNSkgUmVtb3ZlIHRoZSBkZXByZWNhdGVkIGFuZCBub3ctdW51c2VkIHByYW5kb21f dTMyKCkgYW5kCiAgIHByYW5kb21fYnl0ZXMoKSBpbmxpbmUgd3JhcHBlciBmdW5jdGlvbnMuCgpJ IHdhcyB0aGlua2luZyBvZiB0YWtpbmcgdGhpcyB0aHJvdWdoIG15IHJhbmRvbS5naXQgdHJlZSAo b24gd2hpY2ggdGhpcwpzZXJpZXMgaXMgY3VycmVudGx5IGJhc2VkKSBhbmQgc3VibWl0dGluZyBp dCBuZWFyIHRoZSBlbmQgb2YgdGhlIG1lcmdlCndpbmRvdywgb3Igd2FpdGluZyBmb3IgdGhlIHZl cnkgZW5kIG9mIHRoZSA2LjEgY3ljbGUgd2hlbiB0aGVyZSB3aWxsIGJlCnRoZSBmZXdlc3QgbmV3 IHBhdGNoZXMgYnJld2luZy4gSWYgc29tZWJvZHkgd2l0aCBzb21lIHRyZWV3aWRlLWNsZWFudXAK ZXhwZXJpZW5jZSBtaWdodCBzaGFyZSBzb21lIHdpc2RvbSBhYm91dCB3aGF0IHRoZSBiZXN0IHRp bWluZyB1c3VhbGx5CndpbmRzIHVwIGJlaW5nLCBJJ20gYWxsIGVhcnMuCgpQbGVhc2UgdGFrZSBh IGxvb2shCgpUaGFua3MsCkphc29uCgpDYzogQW5kcmVhcyBOb2V2ZXIgPGFuZHJlYXMubm9ldmVy QGdtYWlsLmNvbT4KQ2M6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+ CkNjOiBBbmR5IFNoZXZjaGVua28gPGFuZHJpeS5zaGV2Y2hlbmtvQGxpbnV4LmludGVsLmNvbT4K Q2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRlPgpDYzogQ2hyaXN0b3BoIELDtmhtd2Fs ZGVyIDxjaHJpc3RvcGguYm9laG13YWxkZXJAbGluYml0LmNvbT4KQ2M6IENocmlzdG9waCBIZWxs d2lnIDxoY2hAbHN0LmRlPgpDYzogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5l dD4KQ2M6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+CkNjOiBEYXZlIEhhbnNlbiA8 ZGF2ZS5oYW5zZW5AbGludXguaW50ZWwuY29tPgpDYzogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBk YXZlbWxvZnQubmV0PgpDYzogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpDYzog RmxvcmlhbiBXZXN0cGhhbCA8ZndAc3RybGVuLmRlPgpDYzogR3JlZyBLcm9haC1IYXJ0bWFuIDxn cmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4sCkNjOiBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9y LmNvbT4KQ2M6IEhlcmJlcnQgWHUgPGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KQ2M6IEh1 Z2ggRGlja2lucyA8aHVnaGRAZ29vZ2xlLmNvbT4KQ2M6IEpha3ViIEtpY2luc2tpIDxrdWJhQGtl cm5lbC5vcmc+CkNjOiBKYW1lcyBFLkouIEJvdHRvbWxleSA8amVqYkBsaW51eC5pYm0uY29tPgpD YzogSmFuIEthcmEgPGphY2tAc3VzZS5jb20+CkNjOiBKYXNvbiBHdW50aG9ycGUgPGpnZ0B6aWVw ZS5jYT4KQ2M6IEplbnMgQXhib2UgPGF4Ym9lQGtlcm5lbC5kaz4KQ2M6IEpvaGFubmVzIEJlcmcg PGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+CkNjOiBKb25hdGhhbiBDb3JiZXQgPGNvcmJldEBs d24ubmV0PgpDYzogSm96c2VmIEthZGxlY3NpayA8a2FkbGVjQG5ldGZpbHRlci5vcmc+CkNjOiBL UCBTaW5naCA8a3BzaW5naEBrZXJuZWwub3JnPgpDYzogS2VlcyBDb29rIDxrZWVzY29va0BjaHJv bWl1bS5vcmc+CkNjOiBNYXJjbyBFbHZlciA8ZWx2ZXJAZ29vZ2xlLmNvbT4KQ2M6IE1hdXJvIENh cnZhbGhvIENoZWhhYiA8bWNoZWhhYkBrZXJuZWwub3JnPgpDYzogTWljaGFlbCBFbGxlcm1hbiA8 bXBlQGVsbGVybWFuLmlkLmF1PgpDYzogUGFibG8gTmVpcmEgQXl1c28gPHBhYmxvQG5ldGZpbHRl ci5vcmc+CkNjOiBQYW9sbyBBYmVuaSA8cGFiZW5pQHJlZGhhdC5jb20+CkNjOiBUaGVvZG9yZSBU cydvIDx0eXRzb0BtaXQuZWR1PgpDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXgu ZGU+CkNjOiBUaG9tYXMgR3JhZiA8dGdyYWZAc3V1Zy5jaD4KQ2M6IFVsZiBIYW5zc29uIDx1bGYu aGFuc3NvbkBsaW5hcm8ub3JnPgpDYzogVmlnbmVzaCBSYWdoYXZlbmRyYSA8dmlnbmVzaHJAdGku Y29tPgpDYzogWXVyeSBOb3JvdiA8eXVyeS5ub3JvdkBnbWFpbC5jb20+CkNjOiBkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCkNjOiBrYXNhbi1kZXZAZ29vZ2xlZ3JvdXBzLmNvbQpDYzog a2VybmVsLWphbml0b3JzQHZnZXIua2VybmVsLm9yZwpDYzogbGludXgtYmxvY2tAdmdlci5rZXJu ZWwub3JnCkNjOiBsaW51eC1jcnlwdG9Admdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1kb2NAdmdl ci5rZXJuZWwub3JnCkNjOiBsaW51eC1mc2RldmVsQHZnZXIua2VybmVsLm9yZwpDYzogbGludXgt bWVkaWFAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1tbUBrdmFjay5vcmcKQ2M6IGxpbnV4LW1t Y0B2Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCkNjOiBs aW51eC1udm1lQGxpc3RzLmluZnJhZGVhZC5vcmcKQ2M6IGxpbnV4LXJkbWFAdmdlci5rZXJuZWwu b3JnCkNjOiBsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC13aXJlbGVzc0B2Z2Vy Lmtlcm5lbC5vcmcKQ2M6IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKCkphc29uIEEuIERvbmVuZmVs ZCAoNSk6CiAgdHJlZXdpZGU6IHVzZSBwcmFuZG9tX3UzMl9tYXgoKSB3aGVuIHBvc3NpYmxlCiAg dHJlZXdpZGU6IHVzZSBnZXRfcmFuZG9tX3t1OCx1MTZ9KCkgd2hlbiBwb3NzaWJsZQogIHRyZWV3 aWRlOiB1c2UgZ2V0X3JhbmRvbV91MzIoKSB3aGVuIHBvc3NpYmxlCiAgdHJlZXdpZGU6IHVzZSBn ZXRfcmFuZG9tX2J5dGVzIHdoZW4gcG9zc2libGUKICBwcmFuZG9tOiByZW1vdmUgdW51c2VkIGZ1 bmN0aW9ucwoKIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIucnN0ICAgICAgICAgICB8 ICAyICstCiBhcmNoL3Bvd2VycGMvY3J5cHRvL2NyYy12cG1zdW1fdGVzdC5jICAgICAgICAgfCAg MiArLQogYXJjaC94ODYvbW0vcGF0L2NwYS10ZXN0LmMgICAgICAgICAgICAgICAgICAgIHwgIDQg Ky0KIGJsb2NrL2Jsay1jcnlwdG8tZmFsbGJhY2suYyAgICAgICAgICAgICAgICAgICB8ICAyICst CiBjcnlwdG8vYXN5bmNfdHgvcmFpZDZ0ZXN0LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQog Y3J5cHRvL3Rlc3RtZ3IuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOTQgKysrKysr KysrLS0tLS0tLS0tLQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyAgICAgICAg ICAgIHwgIDQgKy0KIGRyaXZlcnMvZG1hL2RtYXRlc3QuYyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiBkcml2ZXJzL2luZmluaWJhbmQvY29yZS9jbWEuYyAgICAgICAgICAgICAgICAg fCAgMiArLQogZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0L2NtLmMgICAgICAgICAgICAgIHwg IDQgKy0KIGRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9pZF90YWJsZS5jICAgICAgICB8ICA0 ICstCiBkcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS90aWRfcmRtYS5jICAgICAgICAgfCAgMiAr LQogZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9haC5jICAgICAgIHwgIDUgKy0K IGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L21hZC5jICAgICAgICAgICAgICB8ICAyICstCiBk cml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMgICAgICAgfCAgMiArLQogZHJp dmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmMgICAgICAgIHwgIDMgKy0KIGRyaXZl cnMvbWQvcmFpZDUtY2FjaGUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJz L21lZGlhL2NvbW1vbi92NGwyLXRwZy92NGwyLXRwZy1jb3JlLmMgfCAgMiArLQogLi4uL21lZGlh L3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC1yYWRpby1yeC5jIHwgIDQgKy0KIGRyaXZlcnMvbW1j L2NvcmUvY29yZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL21tYy9o b3N0L2R3X21tYy5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tdGQvbmFu ZC9yYXcvbmFuZHNpbS5jICAgICAgICAgICAgICAgIHwgIDggKy0KIGRyaXZlcnMvbXRkL3Rlc3Rz L210ZF9uYW5kZWNjdGVzdC5jICAgICAgICAgICB8IDEyICstLQogZHJpdmVycy9tdGQvdGVzdHMv c3BlZWR0ZXN0LmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbXRkL3Rlc3RzL3N0 cmVzc3Rlc3QuYyAgICAgICAgICAgICAgICB8IDE5ICstLS0KIGRyaXZlcnMvbXRkL3ViaS9kZWJ1 Zy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL210ZC91YmkvZGVidWcu aCAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArLQogZHJpdmVycy9uZXQvYm9uZGluZy9ib25k X21haW4uYyAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2Fk Y29tL2JueHQvYm54dC5jICAgICB8ICAyICstCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNv bS9jbmljLmMgICAgICAgICAgfCAgNSArLQogLi4uL2NoZWxzaW8vaW5saW5lX2NyeXB0by9jaHRs cy9jaHRsc19jbS5jICAgIHwgIDQgKy0KIC4uLi9jaGVsc2lvL2lubGluZV9jcnlwdG8vY2h0bHMv Y2h0bHNfaW8uYyAgICB8ICA0ICstCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9yb2NrZXIvcm9ja2Vy X21haW4uYyAgICAgfCAgOCArLQogZHJpdmVycy9uZXQvaGFtcmFkaW8vYmF5Y29tX2VwcC5jICAg ICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbmV0L2hhbXJhZGlvL2hkbGNkcnYuYyAgICAgICAg ICAgICAgICB8ICAyICstCiBkcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYyAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogZHJpdmVycy9uZXQvcGh5L2F0ODAzeC5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGRyaXZlcnMvbmV0L3dpcmVndWFyZC9zZWxmdGVzdC9hbGxvd2VkaXBzLmMg ICB8IDE2ICsrLS0KIC4uLi9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgICAgICAg ICB8ICAyICstCiAuLi4vbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1jdHh0LmMg fCAgMiArLQogLi4uL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYyAgIHwg IDQgKy0KIC4uLi93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYyAgICB8ICAy ICstCiAuLi4vbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMgfCAgMiAr LQogZHJpdmVycy9udm1lL2NvbW1vbi9hdXRoLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IGRyaXZlcnMvc2NzaS9jeGdiaS9jeGdiNGkvY3hnYjRpLmMgICAgICAgICAgICB8ICA0ICstCiBk cml2ZXJzL3Njc2kvZmNvZS9mY29lX2N0bHIuYyAgICAgICAgICAgICAgICAgfCAgNCArLQogZHJp dmVycy9zY3NpL2xwZmMvbHBmY19oYmFkaXNjLmMgICAgICAgICAgICAgIHwgIDYgKy0KIGRyaXZl cnMvc2NzaS9xZWRpL3FlZGlfbWFpbi5jICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJz L3RhcmdldC9pc2NzaS9jeGdiaXQvY3hnYml0X2NtLmMgICAgICAgfCAgMiArLQogZHJpdmVycy90 aHVuZGVyYm9sdC94ZG9tYWluLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvdmlk ZW8vZmJkZXYvdXZlc2FmYi5jICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9jZXBoL2lub2Rl LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvY2VwaC9tZHNtYXAu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL2V4ZmF0L2lub2RlLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9leHQyL2lhbGxvYy5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogZnMvZXh0NC9pYWxsb2MuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKy0KIGZzL2V4dDQvaW9jdGwuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBmcy9leHQ0L21tcC5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZXh0NC9zdXBlci5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDcgKy0KIGZzL2YyZnMvZ2MuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9mMmZzL25hbWVpLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZjJmcy9zZWdtZW50LmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDggKy0KIGZzL2ZhdC9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBmcy9uZnNkL25mczRzdGF0ZS5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNCArLQogZnMvdWJpZnMvZGVidWcuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMTAgKy0KIGZzL3ViaWZzL2pvdXJuYWwuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAyICstCiBmcy91Ymlmcy9scHRfY29tbWl0LmMgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxNCArLS0KIGZzL3ViaWZzL3RuY19jb21taXQuYyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiBmcy94ZnMvbGlieGZzL3hmc19hbGxvYy5jICAgICAgICAgICAgICAgICAgICAg fCAgMiArLQogZnMveGZzL2xpYnhmcy94ZnNfaWFsbG9jLmMgICAgICAgICAgICAgICAgICAgIHwg IDQgKy0KIGZzL3hmcy94ZnNfZXJyb3IuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBmcy94ZnMveGZzX2ljYWNoZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiAr LQogZnMveGZzL3hmc19sb2cuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IGluY2x1ZGUvbGludXgvcHJhbmRvbS5oICAgICAgICAgICAgICAgICAgICAgICB8IDEyIC0tLQog aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX3F1ZXVlLmggICAgICAgICAgICAgIHwgIDIgKy0KIGlu Y2x1ZGUvbmV0L3JlZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBpbmNs dWRlL25ldC9zb2NrLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQoga2VybmVs L2tjc2FuL3NlbGZ0ZXN0LmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGtlcm5lbC90 aW1lL2Nsb2Nrc291cmNlLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBsaWIvZmF1bHQt aW5qZWN0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGliL2ZpbmRfYml0 X2JlbmNobWFyay5jICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGxpYi9yYW5kb20zMi5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBsaWIvcmVlZF9zb2xvbW9u L3Rlc3RfcnNsaWIuYyAgICAgICAgICAgICAgICAgfCAxMiArLS0KIGxpYi9zYml0bWFwLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBsaWIvdGVzdF9mcHJvYmUuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGliL3Rlc3Rfa3Byb2Jlcy5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi90ZXN0X2xpc3Rfc29ydC5jICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBsaWIvdGVzdF9vYmphZ2cuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGliL3Rlc3Rfcmhhc2h0YWJsZS5jICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDYgKy0KIGxpYi90ZXN0X3ZtYWxsb2MuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDE5ICstLS0KIGxpYi91dWlkLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBtbS9zaG1lbS5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogbmV0LzgwMi9nYXJwLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC84MDIvbXJwLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBuZXQvY2VwaC9tb25fY2xpZW50LmMgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArLQogbmV0L2NlcGgvb3NkX2NsaWVudC5jICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIG5ldC9jb3JlL25laWdoYm91ci5jICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAyICstCiBuZXQvY29yZS9wa3RnZW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA0NyArKysrKy0tLS0tCiBuZXQvY29yZS9zdHJlYW0uYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArLQogbmV0L2RjY3AvaXB2NC5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDQgKy0KIG5ldC9pcHY0L2RhdGFncmFtLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAyICstCiBuZXQvaXB2NC9pZ21wLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNiArLQogbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYyAgICAgICAgICAgICAg IHwgIDIgKy0KIG5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBuZXQvaXB2NC9pcF9vdXRwdXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQogbmV0L2lwdjQvcm91dGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIG5ldC9pcHY0L3RjcF9jZGcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICst CiBuZXQvaXB2NC90Y3BfaXB2NC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQog bmV0L2lwdjQvdWRwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5l dC9pcHY2L2FkZHJjb25mLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICstCiBuZXQv aXB2Ni9pcDZfZmxvd2xhYmVsLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2lw djYvbWNhc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKy0KIG5ldC9pcHY2 L291dHB1dF9jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvbWFjODAy MTEvcmM4MDIxMV9taW5zdHJlbF9odC5jICAgICAgICAgICAgfCAgMiArLQogbmV0L21hYzgwMjEx L3NjYW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9uZXRmaWx0ZXIv aXB2cy9pcF92c19jb25uLmMgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvbmV0ZmlsdGVyL2lw dnMvaXBfdnNfdHdvcy5jICAgICAgICAgICAgICAgfCAgNCArLQogbmV0L25ldGZpbHRlci9uZl9u YXRfY29yZS5jICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIG5ldC9uZXRmaWx0ZXIveHRfc3Rh dGlzdGljLmMgICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9u cy5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L3BhY2tldC9hZl9wYWNrZXQuYyAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9yZHMvYmluZC5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvc2NoZWQvYWN0X2dhY3QuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L3NjaGVkL2FjdF9zYW1wbGUuYyAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9zY2hlZC9zY2hfY2FrZS5jICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICA4ICstCiBuZXQvc2NoZWQvc2NoX25ldGVtLmMgICAgICAgICAgICAg ICAgICAgICAgICAgfCAyMiArKy0tLQogbmV0L3NjaGVkL3NjaF9waWUuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9zY2hlZC9zY2hfc2ZiLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBuZXQvc2N0cC9zb2NrZXQuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNCArLQogbmV0L3N1bnJwYy9hdXRoX2dzcy9nc3Nfa3JiNV93cmFwLmMgICAg ICAgICAgIHwgIDQgKy0KIG5ldC9zdW5ycGMvY2FjaGUuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAyICstCiBuZXQvc3VucnBjL3hwcnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMiArLQogbmV0L3N1bnJwYy94cHJ0c29jay5jICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIG5ldC90aXBjL3NvY2tldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBuZXQvdW5peC9hZl91bml4LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQogbmV0L3hmcm0veGZybV9zdGF0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIDEzNiBmaWxlcyBjaGFuZ2VkLCAzMDUgaW5zZXJ0aW9ucygrKSwgMzQyIGRlbGV0aW9ucygt KQoKLS0gCjIuMzcuMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg== 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 DE501C352AA for ; Thu, 6 Oct 2022 13:25:59 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7DAD410E5C2; Thu, 6 Oct 2022 13:25:58 +0000 (UTC) Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by gabe.freedesktop.org (Postfix) with ESMTPS id 68F2710E5C2 for ; Thu, 6 Oct 2022 13:25:52 +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 dfw.source.kernel.org (Postfix) with ESMTPS id C2CCF6199D; Thu, 6 Oct 2022 13:25:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B6A38C433D6; Thu, 6 Oct 2022 13:25:46 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="U19BJ3bB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1665062745; 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; bh=7dFj46iv6B3wpMLAkzxu2+UZUtW66eQt4bdRtLsdjWc=; b=U19BJ3bBONmCvTPAh8uyTTfbJMDEIORNPRa/gw0p0oqINVUGtieIgpXVc1s6oQT1xpTUGu EKtfsElTXyRWuUz+KDHImGkvljaIMeDpXlV/PnfxnGCQYNTmUia1TE+L96QKJjYd8/6F35 8Pc27xLTY3BvRaGlSceTp3zdkfZHO+0= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id b30e7dab (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Thu, 6 Oct 2022 13:25:44 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org, patches@lists.linux.dev Subject: [PATCH v2 0/5] treewide cleanup of random integer usage Date: Thu, 6 Oct 2022 07:25:05 -0600 Message-Id: <20221006132510.23374-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" , Vignesh Raghavendra , linux-doc@vger.kernel.org, linux-mmc@vger.kernel.org, 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, "H . Peter Anvin" , Andreas Noever , Christoph Hellwig , Mauro Carvalho Chehab , Herbert Xu , Daniel Borkmann , Jonathan Corbet , linux-rdma@vger.kernel.org, Michael Ellerman , Hugh Dickins , kasan-dev@googlegroups.com, Jozsef Kadlecsik , Jason Gunthorpe , Jakub Kicinski , Ulf Hansson , Paolo Abeni , Pablo Neira Ayuso , linux-media@vger.kernel.org, Marco Elver , Kees Cook , Yury Norov , "James E . J . Bottomley" , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, Borislav Petkov , linux-nvme@lists.infradead.org, Dave Airlie , Thomas Gleixner , Andy Shevchenko , Johannes Berg , Jens Axboe , Theodore Ts'o , Greg Kroah-Hartman , linux-usb@vger.kernel.org, Florian Westphal , =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , linux-crypto@vger.kernel.org, Jan Kara , Thomas Graf , Andrew Morton , "David S . Miller" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" [Posting v2 right away, because I CC'd too many people for v1, and email systems worldwide exploded.] Hi folks, This is a five part treewide cleanup of random integer handling. The rules for random integers are: - If you want a secure or an insecure random u64, use get_random_u64(). - If you want a secure or an insecure random u32, use get_random_u32(). * The old function prandom_u32() has been deprecated for a while now and is just a wrapper around get_random_u32(). - If you want a secure or an insecure random u16, use get_random_u16(). - If you want a secure or an insecure random u8, use get_random_u8(). - If you want secure or insecure random bytes, use get_random_bytes(). * The old function prandom_bytes() has been deprecated for a while now and has long been a wrapper around get_random_bytes(). - If you want a non-uniform random u32, u16, or u8 bounded by a certain open interval maximum, use prandom_u32_max(). * I say "non-uniform", because it doesn't do any rejection sampling or divisions. Hence, it stays within the prandom_* namespace. These rules ought to be applied uniformly, so that we can clean up the deprecated functions, and earn the benefits of using the modern functions. In particular, in addition to the boring substitutions, this patchset accomplishes a few nice effects: - By using prandom_u32_max() with an upper-bound that the compiler can prove at compile-time is ≤65536 or ≤256, internally get_random_u16() or get_random_u8() is used, which wastes fewer batched random bytes, and hence has higher throughput. - By using prandom_u32_max() instead of %, when the upper-bound is not a constant, division is still avoided, because prandom_u32_max() uses a faster multiplication-based trick instead. - By using get_random_u16() or get_random_u8() in cases where the return value is intended to indeed be a u16 or a u8, we waste fewer batched random bytes, and hence have higher throughput. So, based on those rules and benefits from following them, this patchset breaks down into the following five steps, which were done mostly manually: 1) Replace `prandom_u32() % max` and variants thereof with prandom_u32_max(max). 2) Replace `(type)get_random_u32()` and variants thereof with get_random_u16() or get_random_u8(). I took the pains to actually look and see what every lvalue type was across the entire tree. 3) Replace remaining deprecated uses of prandom_u32() with get_random_u32(). 4) Replace remaining deprecated uses of prandom_bytes() with get_random_bytes(). 5) Remove the deprecated and now-unused prandom_u32() and prandom_bytes() inline wrapper functions. I was thinking of taking this through my random.git tree (on which this series is currently based) and submitting it near the end of the merge window, or waiting for the very end of the 6.1 cycle when there will be the fewest new patches brewing. If somebody with some treewide-cleanup experience might share some wisdom about what the best timing usually winds up being, I'm all ears. Please take a look! Thanks, Jason Cc: Andreas Noever Cc: Andrew Morton Cc: Andy Shevchenko Cc: Borislav Petkov Cc: Christoph Böhmwalder Cc: Christoph Hellwig Cc: Daniel Borkmann Cc: Dave Airlie Cc: Dave Hansen Cc: David S. Miller Cc: Eric Dumazet Cc: Florian Westphal Cc: Greg Kroah-Hartman , Cc: H. Peter Anvin Cc: Herbert Xu Cc: Hugh Dickins Cc: Jakub Kicinski Cc: James E.J. Bottomley Cc: Jan Kara Cc: Jason Gunthorpe Cc: Jens Axboe Cc: Johannes Berg Cc: Jonathan Corbet Cc: Jozsef Kadlecsik Cc: KP Singh Cc: Kees Cook Cc: Marco Elver Cc: Mauro Carvalho Chehab Cc: Michael Ellerman Cc: Pablo Neira Ayuso Cc: Paolo Abeni Cc: Theodore Ts'o Cc: Thomas Gleixner Cc: Thomas Graf Cc: Ulf Hansson Cc: Vignesh Raghavendra Cc: Yury Norov Cc: dri-devel@lists.freedesktop.org Cc: kasan-dev@googlegroups.com Cc: kernel-janitors@vger.kernel.org Cc: linux-block@vger.kernel.org Cc: linux-crypto@vger.kernel.org Cc: linux-doc@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org Cc: linux-media@vger.kernel.org Cc: linux-mm@kvack.org Cc: linux-mmc@vger.kernel.org Cc: linux-mtd@lists.infradead.org Cc: linux-nvme@lists.infradead.org Cc: linux-rdma@vger.kernel.org Cc: linux-usb@vger.kernel.org Cc: linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org Jason A. Donenfeld (5): treewide: use prandom_u32_max() when possible treewide: use get_random_{u8,u16}() when possible treewide: use get_random_u32() when possible treewide: use get_random_bytes when possible prandom: remove unused functions Documentation/networking/filter.rst | 2 +- arch/powerpc/crypto/crc-vpmsum_test.c | 2 +- arch/x86/mm/pat/cpa-test.c | 4 +- block/blk-crypto-fallback.c | 2 +- crypto/async_tx/raid6test.c | 2 +- crypto/testmgr.c | 94 +++++++++---------- drivers/block/drbd/drbd_receiver.c | 4 +- drivers/dma/dmatest.c | 2 +- drivers/infiniband/core/cma.c | 2 +- drivers/infiniband/hw/cxgb4/cm.c | 4 +- drivers/infiniband/hw/cxgb4/id_table.c | 4 +- drivers/infiniband/hw/hfi1/tid_rdma.c | 2 +- drivers/infiniband/hw/hns/hns_roce_ah.c | 5 +- drivers/infiniband/hw/mlx4/mad.c | 2 +- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 +- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 3 +- drivers/md/raid5-cache.c | 2 +- drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 2 +- .../media/test-drivers/vivid/vivid-radio-rx.c | 4 +- drivers/mmc/core/core.c | 4 +- drivers/mmc/host/dw_mmc.c | 2 +- drivers/mtd/nand/raw/nandsim.c | 8 +- drivers/mtd/tests/mtd_nandecctest.c | 12 +-- drivers/mtd/tests/speedtest.c | 2 +- drivers/mtd/tests/stresstest.c | 19 +--- drivers/mtd/ubi/debug.c | 2 +- drivers/mtd/ubi/debug.h | 6 +- drivers/net/bonding/bond_main.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +- drivers/net/ethernet/broadcom/cnic.c | 5 +- .../chelsio/inline_crypto/chtls/chtls_cm.c | 4 +- .../chelsio/inline_crypto/chtls/chtls_io.c | 4 +- drivers/net/ethernet/rocker/rocker_main.c | 8 +- drivers/net/hamradio/baycom_epp.c | 2 +- drivers/net/hamradio/hdlcdrv.c | 2 +- drivers/net/hamradio/yam.c | 2 +- drivers/net/phy/at803x.c | 2 +- drivers/net/wireguard/selftest/allowedips.c | 16 ++-- .../broadcom/brcm80211/brcmfmac/p2p.c | 2 +- .../net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 2 +- .../net/wireless/marvell/mwifiex/cfg80211.c | 4 +- .../wireless/microchip/wilc1000/cfg80211.c | 2 +- .../net/wireless/quantenna/qtnfmac/cfg80211.c | 2 +- drivers/nvme/common/auth.c | 2 +- drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 4 +- drivers/scsi/fcoe/fcoe_ctlr.c | 4 +- drivers/scsi/lpfc/lpfc_hbadisc.c | 6 +- drivers/scsi/qedi/qedi_main.c | 2 +- drivers/target/iscsi/cxgbit/cxgbit_cm.c | 2 +- drivers/thunderbolt/xdomain.c | 2 +- drivers/video/fbdev/uvesafb.c | 2 +- fs/ceph/inode.c | 2 +- fs/ceph/mdsmap.c | 2 +- fs/exfat/inode.c | 2 +- fs/ext2/ialloc.c | 3 +- fs/ext4/ialloc.c | 7 +- fs/ext4/ioctl.c | 4 +- fs/ext4/mmp.c | 2 +- fs/ext4/super.c | 7 +- fs/f2fs/gc.c | 2 +- fs/f2fs/namei.c | 2 +- fs/f2fs/segment.c | 8 +- fs/fat/inode.c | 2 +- fs/nfsd/nfs4state.c | 4 +- fs/ubifs/debug.c | 10 +- fs/ubifs/journal.c | 2 +- fs/ubifs/lpt_commit.c | 14 +-- fs/ubifs/tnc_commit.c | 2 +- fs/xfs/libxfs/xfs_alloc.c | 2 +- fs/xfs/libxfs/xfs_ialloc.c | 4 +- fs/xfs/xfs_error.c | 2 +- fs/xfs/xfs_icache.c | 2 +- fs/xfs/xfs_log.c | 2 +- include/linux/prandom.h | 12 --- include/net/netfilter/nf_queue.h | 2 +- include/net/red.h | 2 +- include/net/sock.h | 2 +- kernel/kcsan/selftest.c | 4 +- kernel/time/clocksource.c | 2 +- lib/fault-inject.c | 2 +- lib/find_bit_benchmark.c | 4 +- lib/random32.c | 4 +- lib/reed_solomon/test_rslib.c | 12 +-- lib/sbitmap.c | 4 +- lib/test_fprobe.c | 2 +- lib/test_kprobes.c | 2 +- lib/test_list_sort.c | 2 +- lib/test_objagg.c | 2 +- lib/test_rhashtable.c | 6 +- lib/test_vmalloc.c | 19 +--- lib/uuid.c | 2 +- mm/shmem.c | 2 +- net/802/garp.c | 2 +- net/802/mrp.c | 2 +- net/ceph/mon_client.c | 2 +- net/ceph/osd_client.c | 2 +- net/core/neighbour.c | 2 +- net/core/pktgen.c | 47 +++++----- net/core/stream.c | 2 +- net/dccp/ipv4.c | 4 +- net/ipv4/datagram.c | 2 +- net/ipv4/igmp.c | 6 +- net/ipv4/inet_connection_sock.c | 2 +- net/ipv4/inet_hashtables.c | 2 +- net/ipv4/ip_output.c | 2 +- net/ipv4/route.c | 2 +- net/ipv4/tcp_cdg.c | 2 +- net/ipv4/tcp_ipv4.c | 4 +- net/ipv4/udp.c | 2 +- net/ipv6/addrconf.c | 8 +- net/ipv6/ip6_flowlabel.c | 2 +- net/ipv6/mcast.c | 10 +- net/ipv6/output_core.c | 2 +- net/mac80211/rc80211_minstrel_ht.c | 2 +- net/mac80211/scan.c | 2 +- net/netfilter/ipvs/ip_vs_conn.c | 2 +- net/netfilter/ipvs/ip_vs_twos.c | 4 +- net/netfilter/nf_nat_core.c | 4 +- net/netfilter/xt_statistic.c | 2 +- net/openvswitch/actions.c | 2 +- net/packet/af_packet.c | 2 +- net/rds/bind.c | 2 +- net/sched/act_gact.c | 2 +- net/sched/act_sample.c | 2 +- net/sched/sch_cake.c | 8 +- net/sched/sch_netem.c | 22 ++--- net/sched/sch_pie.c | 2 +- net/sched/sch_sfb.c | 2 +- net/sctp/socket.c | 4 +- net/sunrpc/auth_gss/gss_krb5_wrap.c | 4 +- net/sunrpc/cache.c | 2 +- net/sunrpc/xprt.c | 2 +- net/sunrpc/xprtsock.c | 2 +- net/tipc/socket.c | 2 +- net/unix/af_unix.c | 2 +- net/xfrm/xfrm_state.c | 2 +- 136 files changed, 305 insertions(+), 342 deletions(-) -- 2.37.3