From patchwork Mon Nov 14 16:45:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Jason A. Donenfeld" X-Patchwork-Id: 1615 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2250047wru; Mon, 14 Nov 2022 08:57:43 -0800 (PST) X-Google-Smtp-Source: AA0mqf6PSiOxzeyeQrXdRKMJykKCLd+Et/2xm9ZBjFo0rhrfdk7I8mgNqAYXzFxPke1Yq5qu4Npt X-Received: by 2002:a17:90a:a887:b0:20a:739b:9708 with SMTP id h7-20020a17090aa88700b0020a739b9708mr14519612pjq.140.1668445063324; Mon, 14 Nov 2022 08:57:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668445063; cv=none; d=google.com; s=arc-20160816; b=M5fVwFwDl+X8ZGw8Qi9mqa09g6X4KP79FB6pSts0BzJNHlCyZ3qkEzBMpCt5Yun6PY NpDo43hdsNUvt4GxV7Pj4CJNIggG1bxMTEASv/7eA7vR9O/Mw562DSWIEKxoccmR2W5I srY5yxU3SvX8tqIhXf/qmNQB0euGr5IVR4B89hgCa4tLZE0rJMvwNJIFeGA4pbH0qvX9 fV4Di4AzcR5VoeXtnIlZCPJyHIG0VXttFVMSkznO6I1CqJOeFT45wkd+HIDlEXHrvodC cgV4K7pDICIKs2PqTZlLoS7KAEPYjrQJfh7Lho/l57tV0xM1n/2LZkQMAPeNI/2jFXwf O99g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=AO9qv9PVxuvkGc2dPFGpTuEOOKGUqBaDWRAo2MY9Jus=; b=E3pNVEKjUdOkkAmA248KR9mb6HD5cXLVdTGlqfSeEKweKmfBVKRgZPoR3dG/0edL7e h9JhBIFLCuJcFrJoZ5Zk5xKM8m7wHXXvkCfVRaugJPSYP28KAn3NTOZxiQMxt9wFE00g jEWcwKqTiizVb+BJkcRj1Gl1iZrhyz9vobQE8RrXdqzvb/vQcH4AbUa0BbkfwYSMFDKs C/ODfZTt/zAOZ5TeZBmVrbYDdCO7spBEuacuqj1V8+kQ8dXs/o0LMsOa2AVzvOxWiKGM F1oNa4RsV+svgWrg6PzUEPNhiJs4Z3Ovx7ibuH7GGKPkSBcQrFCortVJE4Uqmx6TdJKl wVNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@zx2c4.com header.s=20210105 header.b=BGo0Nnsy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=zx2c4.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n3-20020a170903110300b0017532e01e57si11571973plh.200.2022.11.14.08.57.29; Mon, 14 Nov 2022 08:57:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@zx2c4.com header.s=20210105 header.b=BGo0Nnsy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=zx2c4.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237739AbiKNQr0 (ORCPT + 99 others); Mon, 14 Nov 2022 11:47:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55662 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238050AbiKNQq5 (ORCPT ); Mon, 14 Nov 2022 11:46:57 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25CD52F389; Mon, 14 Nov 2022 08:46:56 -0800 (PST) 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 CE789B8109D; Mon, 14 Nov 2022 16:46:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA2D8C433D6; Mon, 14 Nov 2022 16:46:49 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="BGo0Nnsy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1668444407; 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=AO9qv9PVxuvkGc2dPFGpTuEOOKGUqBaDWRAo2MY9Jus=; b=BGo0NnsymG8dRA9vuBIjHmvSc3v4DRywM6GlnEigjsrR+iV8bi5/V2ukeEGIYbBO6C1NrZ Zmy49IsfUWdfeQec2yQLTcXvDgVnO9E3IFf+MBMEfFn4eg5NkivImNrSyo7xAASTw609jY //YJPrGKaZH1vrj0XWbV690rFBvQmH0= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 23208aca (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Mon, 14 Nov 2022 16:46:46 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org, patches@lists.linux.dev Cc: "Jason A. Donenfeld" , Kees Cook , Greg Kroah-Hartman , Jakub Kicinski , Russell King , Catalin Marinas , Thomas Bogendoerfer , Heiko Carstens , Herbert Xu , =?utf-8?q?Christoph_B=C3=B6hmwalder?= , Jani Nikula , Jason Gunthorpe , Sakari Ailus , "Martin K . Petersen" , Theodore Ts'o , Andreas Dilger , Jaegeuk Kim , Richard Weinberger , "Darrick J . Wong" , SeongJae Park , Thomas Gleixner , Andrew Morton , Michael Ellerman , Helge Deller , netdev@vger.kernel.org, linux-crypto@vger.kernel.org, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-mmc@vger.kernel.org, linux-parisc@vger.kernel.org Subject: [PATCH v2 0/3] convert tree to get_random_u32_{below,above,between}() Date: Mon, 14 Nov 2022 17:45:55 +0100 Message-Id: <20221114164558.1180362-1-Jason@zx2c4.com> MIME-Version: 1.0 X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749491450987756240?= X-GMAIL-MSGID: =?utf-8?q?1749491450987756240?= Hey everyone, [Changes v1->v2: Jakub asked me to send a v2 around now in the current cycle to minimize potential conflicts with the net tree. So this is rebased and stripped down to just the treewide parts. As well, the removal function is deferred until the end of 6.2 in a separate pull so that we don't have merge issues.] This series is the second tranche of tree-wide conversions to get random integer handling a bit tamer. It's another Coccinelle-based patchset. First we s/prandom_u32_max/get_random_u32_below/, since the former is just a deprecated alias for the latter. Then later, we can remove prandom_u32_max all together. I'm quite happy about finally being able to do that. It means that prandom.h is now only for deterministic and repeatable randomness, not non-deterministic/cryptographic randomness. That line is no longer blurred. In order to clean up a bunch of inefficient patterns, we use two simple helper functions built on top of get_random_u32_below: get_random_u32_above and get_random_u32_between. The next two patches convert some gnarly open-coded number juggling to use these helpers. I've used Coccinelle for these three treewide patches, so hopefully review is rather uneventful. I didn't accept all of the changes that Coccinelle proposed, though, as these tend to be somewhat context-specific. I erred on the side of just going with the most obvious cases, at least this time through. And then we can address more complicated cases through actual maintainer trees. Since get_random_u32_below() and others sits in my random.git tree, these patches too will flow through that same tree. Regards, Jason Cc: Kees Cook Cc: Greg Kroah-Hartman Cc: Jakub Kicinski Cc: Russell King Cc: Catalin Marinas Cc: Thomas Bogendoerfer Cc: Heiko Carstens Cc: Herbert Xu Cc: Christoph Böhmwalder Cc: Jani Nikula Cc: Jason Gunthorpe Cc: Sakari Ailus Cc: Martin K. Petersen Cc: Theodore Ts'o Cc: Andreas Dilger Cc: Jaegeuk Kim Cc: Richard Weinberger Cc: Darrick J. Wong Cc: SeongJae Park Cc: Thomas Gleixner Cc: Andrew Morton Cc: Michael Ellerman Cc: Helge Deller Cc: netdev@vger.kernel.org Cc: linux-crypto@vger.kernel.org Cc: linux-block@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org Cc: linux-media@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: loongarch@lists.linux.dev Cc: linux-mips@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-mmc@vger.kernel.org Cc: linux-parisc@vger.kernel.org Jason A. Donenfeld (3): treewide: use get_random_u32_below() instead of deprecated function treewide: use get_random_u32_{above,below}() instead of manual loop treewide: use get_random_u32_between() when possible arch/arm/kernel/process.c | 2 +- arch/arm64/kernel/process.c | 2 +- arch/loongarch/kernel/process.c | 2 +- arch/loongarch/kernel/vdso.c | 2 +- arch/mips/kernel/process.c | 2 +- arch/mips/kernel/vdso.c | 2 +- arch/parisc/kernel/vdso.c | 2 +- arch/powerpc/crypto/crc-vpmsum_test.c | 4 +- arch/powerpc/kernel/process.c | 2 +- arch/s390/kernel/process.c | 2 +- arch/s390/kernel/vdso.c | 2 +- arch/sparc/vdso/vma.c | 2 +- arch/um/kernel/process.c | 2 +- arch/x86/entry/vdso/vma.c | 2 +- arch/x86/kernel/module.c | 2 +- arch/x86/kernel/process.c | 2 +- arch/x86/mm/pat/cpa-test.c | 4 +- crypto/rsa-pkcs1pad.c | 2 +- crypto/testmgr.c | 86 +++++++++---------- drivers/block/drbd/drbd_receiver.c | 4 +- drivers/bus/mhi/host/internal.h | 2 +- drivers/dma-buf/st-dma-fence-chain.c | 6 +- .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 +- .../drm/i915/gt/intel_execlists_submission.c | 2 +- drivers/gpu/drm/i915/intel_memory_region.c | 4 +- drivers/infiniband/core/cma.c | 2 +- drivers/infiniband/hw/cxgb4/id_table.c | 4 +- drivers/infiniband/hw/hns/hns_roce_ah.c | 5 +- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 2 +- drivers/md/bcache/request.c | 2 +- drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 8 +- .../media/test-drivers/vidtv/vidtv_demod.c | 8 +- .../test-drivers/vivid/vivid-kthread-cap.c | 2 +- .../test-drivers/vivid/vivid-kthread-out.c | 2 +- .../media/test-drivers/vivid/vivid-radio-rx.c | 4 +- .../media/test-drivers/vivid/vivid-sdr-cap.c | 2 +- .../test-drivers/vivid/vivid-touch-cap.c | 2 +- drivers/mmc/core/core.c | 4 +- drivers/mmc/host/dw_mmc.c | 2 +- drivers/mtd/nand/raw/nandsim.c | 4 +- drivers/mtd/tests/mtd_nandecctest.c | 10 +-- drivers/mtd/tests/stresstest.c | 8 +- drivers/mtd/ubi/debug.c | 2 +- drivers/mtd/ubi/debug.h | 6 +- drivers/net/ethernet/broadcom/cnic.c | 2 +- .../chelsio/inline_crypto/chtls/chtls_io.c | 4 +- drivers/net/phy/at803x.c | 2 +- drivers/net/team/team_mode_random.c | 2 +- drivers/net/wireguard/selftest/allowedips.c | 20 ++--- drivers/net/wireguard/timers.c | 4 +- .../broadcom/brcm80211/brcmfmac/p2p.c | 2 +- .../net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 2 +- drivers/pci/p2pdma.c | 2 +- drivers/s390/scsi/zfcp_fc.c | 2 +- drivers/scsi/fcoe/fcoe_ctlr.c | 4 +- drivers/scsi/qedi/qedi_main.c | 2 +- drivers/scsi/scsi_debug.c | 6 +- fs/ceph/inode.c | 2 +- fs/ceph/mdsmap.c | 2 +- fs/ext2/ialloc.c | 2 +- fs/ext4/ialloc.c | 2 +- fs/ext4/mmp.c | 8 +- fs/ext4/super.c | 5 +- fs/f2fs/gc.c | 2 +- fs/f2fs/segment.c | 8 +- fs/ubifs/debug.c | 8 +- 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 | 2 +- fs/xfs/xfs_error.c | 2 +- include/linux/damon.h | 2 +- include/linux/nodemask.h | 2 +- kernel/bpf/core.c | 4 +- kernel/kcsan/selftest.c | 4 +- kernel/locking/test-ww_mutex.c | 4 +- kernel/time/clocksource.c | 2 +- lib/fault-inject.c | 2 +- lib/find_bit_benchmark.c | 4 +- lib/kobject.c | 2 +- lib/reed_solomon/test_rslib.c | 6 +- lib/sbitmap.c | 4 +- lib/test-string_helpers.c | 2 +- lib/test_fprobe.c | 5 +- lib/test_hexdump.c | 10 +-- lib/test_kprobes.c | 5 +- lib/test_list_sort.c | 2 +- lib/test_printf.c | 2 +- lib/test_rhashtable.c | 6 +- lib/test_vmalloc.c | 8 +- mm/kasan/kasan_test.c | 6 +- mm/kfence/core.c | 4 +- mm/kfence/kfence_test.c | 4 +- mm/slub.c | 2 +- mm/swapfile.c | 5 +- net/802/garp.c | 2 +- net/802/mrp.c | 2 +- net/batman-adv/bat_iv_ogm.c | 4 +- net/batman-adv/bat_v_elp.c | 2 +- net/batman-adv/bat_v_ogm.c | 4 +- net/batman-adv/network-coding.c | 2 +- net/bluetooth/mgmt.c | 5 +- net/can/j1939/socket.c | 2 +- net/can/j1939/transport.c | 2 +- net/ceph/mon_client.c | 2 +- net/ceph/osd_client.c | 2 +- net/core/neighbour.c | 4 +- net/core/pktgen.c | 37 ++++---- net/core/stream.c | 2 +- net/ipv4/icmp.c | 2 +- net/ipv4/igmp.c | 6 +- net/ipv4/inet_connection_sock.c | 2 +- net/ipv4/inet_hashtables.c | 2 +- net/ipv4/route.c | 4 +- net/ipv4/tcp_bbr.c | 2 +- net/ipv4/tcp_input.c | 3 +- net/ipv6/addrconf.c | 8 +- net/ipv6/mcast.c | 10 +-- net/ipv6/output_core.c | 8 +- net/ipv6/route.c | 2 +- net/netfilter/ipvs/ip_vs_twos.c | 4 +- net/netfilter/nf_conntrack_core.c | 4 +- net/netfilter/nf_nat_helper.c | 2 +- net/netlink/af_netlink.c | 2 +- net/packet/af_packet.c | 4 +- net/sched/act_gact.c | 2 +- net/sched/act_sample.c | 2 +- net/sched/sch_choke.c | 2 +- net/sched/sch_netem.c | 4 +- net/sctp/socket.c | 2 +- net/sctp/transport.c | 2 +- net/sunrpc/cache.c | 2 +- net/sunrpc/xprtsock.c | 2 +- net/tipc/socket.c | 2 +- net/vmw_vsock/af_vsock.c | 3 +- net/xfrm/xfrm_state.c | 2 +- 136 files changed, 286 insertions(+), 313 deletions(-)