On Sun, Feb 02, 2025 at 08:00:52PM +0100, Lukas Wunner wrote: > Herbert notes that DIV_ROUND_UP() may overflow unnecessarily if an ecdsa > implementation's ->key_size() callback returns an unusually large value. > Herbert instead suggests (for a division by 8): > > X / 8 + !!(X & 7) > > Based on this formula, introduce a generic DIV_ROUND_UP_POW2() macro and > use it in lieu of DIV_ROUND_UP() for ->key_size() return values. FWIW, I've explored amending DIV_ROUND_UP() to automatically invoke DIV_ROUND_UP_POW2() for constant power-of-2 divisors, like this: #define DIV_ROUND_UP(n, d) \ (__builtin_constant_p(d) && is_power_of_2(d) \ ? DIV_ROUND_UP_POW2(n, d) \ : __KERNEL_DIV_ROUND_UP(n, d)) Unfortunately gcc then complains about arrays sized with DIV_ROUND_UP(). It's possible to work around that by changing those occurrences to __KERNEL_DIV_ROUND_UP(). The resulting patch is below. It can be applied on top of this series. I think it's somewhat intrusive and thus unpleasant, so I decided against this approach for now and instead kept usage of DIV_ROUND_UP_POW2() local to ecdsa. But I'm considering submitting the below patch as an RFC to the linux-hardening folks. At Plumbers they held an Integer Overflow Prevention BoF so this might be of interest to them: https://lpc.events/event/18/contributions/1872/ Thanks, Lukas -- >8 -- Subject: [PATCH] treewide: Harden against integer overflows in DIV_ROUND_UP() Herbert Xu notes that DIV_ROUND_UP() may overflow unnecessarily and instead suggests (for a division by 8): X / 8 + !!(X & 7) Based on this formula, a generic DIV_ROUND_UP_POW2() macro has just been introduced. Use it in DIV_ROUND_UP() for any constant divisor which is a power of 2. Convert all occurrences of DIV_ROUND_UP_POW2() in the crypto subsystem to DIV_ROUND_UP(), which will internally expand to DIV_ROUND_UP_POW2(). Unfortunately wherever DIV_ROUND_UP() is used to size an array, gcc will now raise errors such as: include/linux/tcp.h:91:17: error: variably modified 'val' at file scope __le64 val[DIV_ROUND_UP(TCP_FASTOPEN_COOKIE_MAX, sizeof(u64))]; It seems gcc does not lower the more complex DIV_ROUND_UP() macro before determining whether an array is variably sized. Work around by using __KERNEL_DIV_ROUND_UP() in lieu of DIV_ROUND_UP() wherever it's used to size arrays. Same for initializers of static variables. Link: https://lore.kernel.org/r/Z3iElsILmoSu6FuC@xxxxxxxxxxxxxxxxxxx/ Signed-off-by: Lukas Wunner <lukas@xxxxxxxxx> --- arch/arm/include/asm/kprobes.h | 3 +- arch/arm64/include/asm/fixmap.h | 3 +- arch/arm64/kernel/ptrace.c | 14 ++++---- arch/loongarch/include/asm/bootinfo.h | 2 +- arch/x86/kernel/espfix_64.c | 3 +- arch/x86/kvm/hyperv.c | 3 +- crypto/ecc.c | 2 +- crypto/ecdsa-p1363.c | 9 +++-- crypto/ecdsa-x962.c | 7 ++-- crypto/sig.c | 2 +- drivers/accel/qaic/sahara.c | 5 +-- drivers/cdx/controller/mcdi.h | 3 +- drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h | 2 +- drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h | 2 +- drivers/crypto/sa2ul.h | 3 +- drivers/firewire/ohci.c | 5 +-- drivers/fpga/ice40-spi.c | 2 +- drivers/fpga/intel-m10-bmc-sec-update.c | 2 +- drivers/gpio/gpio-graniterapids.c | 2 +- drivers/gpio/gpio-stmpe.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 +- drivers/gpu/drm/i915/gt/intel_sseu.h | 2 +- drivers/gpu/drm/i915/i915_perf_types.h | 2 +- drivers/gpu/drm/imagination/pvr_fw_mips.h | 2 +- drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.h | 2 +- drivers/gpu/drm/tests/drm_framebuffer_test.c | 34 +++++++++++-------- drivers/input/rmi4/rmi_f30.c | 2 +- drivers/input/rmi4/rmi_f3a.c | 3 +- drivers/irqchip/irq-gic.c | 8 ++--- drivers/irqchip/irq-mst-intc.c | 2 +- drivers/media/firewire/firedtv-fw.c | 3 +- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 4 +-- drivers/media/pci/pt3/pt3.h | 2 +- drivers/media/platform/nxp/dw100/dw100.c | 4 +-- drivers/mfd/twl4030-irq.c | 4 +-- drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 5 ++- drivers/net/ethernet/chelsio/cxgb4vf/sge.c | 3 +- drivers/net/ethernet/cisco/enic/vnic_rq.h | 2 +- drivers/net/ethernet/cisco/enic/vnic_wq.h | 2 +- drivers/net/ethernet/google/gve/gve.h | 3 +- .../hisilicon/hns3/hns3pf/hclge_main.h | 2 +- drivers/net/ethernet/meta/fbnic/fbnic_csr.h | 4 +-- drivers/net/ethernet/qlogic/qed/qed_debug.c | 2 +- drivers/net/ethernet/sfc/falcon/falcon.c | 2 +- drivers/net/ethernet/sfc/mcdi.h | 4 +-- drivers/net/ethernet/sfc/siena/mcdi.h | 4 +-- drivers/net/ethernet/sfc/siena/ptp.c | 2 +- drivers/net/ethernet/ti/cpsw_ale.h | 2 +- drivers/net/wireless/mediatek/mt76/mt76.h | 4 +-- .../wireless/mediatek/mt76/mt76x0/eeprom.c | 2 +- drivers/perf/arm-cmn.c | 2 +- drivers/scsi/fnic/vnic_rq.h | 2 +- drivers/scsi/fnic/vnic_wq.h | 2 +- drivers/scsi/snic/vnic_wq.h | 4 +-- drivers/xen/xenbus/xenbus_client.c | 3 +- fs/ceph/crypto.h | 2 +- fs/ceph/mds_client.c | 3 +- fs/erofs/decompressor.c | 6 ++-- fs/exfat/exfat_fs.h | 5 +-- fs/nfs/nfs42proc.c | 2 +- fs/nfs/nfs4proc.c | 2 +- fs/nfs/nfs4session.h | 2 +- fs/orangefs/orangefs-bufmap.c | 2 +- include/crypto/internal/ecc.h | 2 +- include/linux/can/length.h | 5 ++- include/linux/gpio/gpio-nomadik.h | 2 +- include/linux/math.h | 6 +++- include/linux/mmzone.h | 3 +- include/linux/nfs4.h | 3 +- include/linux/rcu_node_tree.h | 12 +++---- include/linux/tcp.h | 2 +- include/net/cfg80211.h | 2 +- kernel/events/core.c | 2 +- kernel/power/swap.c | 4 +-- kernel/rcu/tasks.h | 2 +- lib/bch.c | 2 +- lib/test_bitmap.c | 7 ++-- mm/zsmalloc.c | 5 +-- net/ethtool/bitset.c | 2 +- net/ethtool/common.h | 2 +- net/ethtool/ioctl.c | 2 +- net/mac80211/airtime.c | 2 +- net/mac80211/rc80211_minstrel_ht.c | 2 +- security/selinux/ss/sidtab.h | 5 +-- sound/usb/misc/ua101.c | 2 +- 85 files changed, 165 insertions(+), 143 deletions(-) diff --git a/arch/arm/include/asm/kprobes.h b/arch/arm/include/asm/kprobes.h index 5b8dbf1b0be4..5ea8ba6246f4 100644 --- a/arch/arm/include/asm/kprobes.h +++ b/arch/arm/include/asm/kprobes.h @@ -63,7 +63,8 @@ struct arch_optimized_insn { * copy of the original instructions. * Different from x86, ARM kprobe_opcode_t is u32. */ -#define MAX_COPIED_INSN DIV_ROUND_UP(RELATIVEJUMP_SIZE, sizeof(kprobe_opcode_t)) +#define MAX_COPIED_INSN __KERNEL_DIV_ROUND_UP(RELATIVEJUMP_SIZE, \ + sizeof(kprobe_opcode_t)) kprobe_opcode_t copied_insn[MAX_COPIED_INSN]; /* detour code buffer */ kprobe_opcode_t *insn; diff --git a/arch/arm64/include/asm/fixmap.h b/arch/arm64/include/asm/fixmap.h index 87e307804b99..7043733dc240 100644 --- a/arch/arm64/include/asm/fixmap.h +++ b/arch/arm64/include/asm/fixmap.h @@ -43,7 +43,8 @@ enum fixed_addresses { * whether it crosses any page boundary. */ FIX_FDT_END, - FIX_FDT = FIX_FDT_END + DIV_ROUND_UP(MAX_FDT_SIZE, PAGE_SIZE) + 1, + FIX_FDT = FIX_FDT_END + __KERNEL_DIV_ROUND_UP(MAX_FDT_SIZE, PAGE_SIZE) + + 1, FIX_EARLYCON_MEM_BASE, FIX_TEXT_POKE0, diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c index f79b0d5f71ac..48c0eae2afbd 100644 --- a/arch/arm64/kernel/ptrace.c +++ b/arch/arm64/kernel/ptrace.c @@ -1654,9 +1654,9 @@ static const struct user_regset aarch64_regsets[] = { #ifdef CONFIG_ARM64_SVE [REGSET_SVE] = { /* Scalable Vector Extension */ .core_note_type = NT_ARM_SVE, - .n = DIV_ROUND_UP(SVE_PT_SIZE(ARCH_SVE_VQ_MAX, - SVE_PT_REGS_SVE), - SVE_VQ_BYTES), + .n = __KERNEL_DIV_ROUND_UP(SVE_PT_SIZE(ARCH_SVE_VQ_MAX, + SVE_PT_REGS_SVE), + SVE_VQ_BYTES), .size = SVE_VQ_BYTES, .align = SVE_VQ_BYTES, .regset_get = sve_get, @@ -1666,8 +1666,9 @@ static const struct user_regset aarch64_regsets[] = { #ifdef CONFIG_ARM64_SME [REGSET_SSVE] = { /* Streaming mode SVE */ .core_note_type = NT_ARM_SSVE, - .n = DIV_ROUND_UP(SVE_PT_SIZE(SME_VQ_MAX, SVE_PT_REGS_SVE), - SVE_VQ_BYTES), + .n = __KERNEL_DIV_ROUND_UP(SVE_PT_SIZE(SME_VQ_MAX, + SVE_PT_REGS_SVE), + SVE_VQ_BYTES), .size = SVE_VQ_BYTES, .align = SVE_VQ_BYTES, .regset_get = ssve_get, @@ -1683,7 +1684,8 @@ static const struct user_regset aarch64_regsets[] = { * registers. These values aren't exposed to * userspace. */ - .n = DIV_ROUND_UP(ZA_PT_SIZE(SME_VQ_MAX), SVE_VQ_BYTES), + .n = __KERNEL_DIV_ROUND_UP(ZA_PT_SIZE(SME_VQ_MAX), + SVE_VQ_BYTES), .size = SVE_VQ_BYTES, .align = SVE_VQ_BYTES, .regset_get = za_get, diff --git a/arch/loongarch/include/asm/bootinfo.h b/arch/loongarch/include/asm/bootinfo.h index 7657e016233f..8b7846bdd985 100644 --- a/arch/loongarch/include/asm/bootinfo.h +++ b/arch/loongarch/include/asm/bootinfo.h @@ -24,7 +24,7 @@ struct loongson_board_info { const char *board_vendor; }; -#define NR_WORDS DIV_ROUND_UP(NR_CPUS, BITS_PER_LONG) +#define NR_WORDS BITS_TO_LONGS(NR_CPUS) /* * The "core" of cores_per_node and cores_per_package stands for a diff --git a/arch/x86/kernel/espfix_64.c b/arch/x86/kernel/espfix_64.c index 6726e0473d0b..4515817cec09 100644 --- a/arch/x86/kernel/espfix_64.c +++ b/arch/x86/kernel/espfix_64.c @@ -59,7 +59,8 @@ DEFINE_PER_CPU_READ_MOSTLY(unsigned long, espfix_waddr); static DEFINE_MUTEX(espfix_init_mutex); /* Page allocation bitmap - each page serves ESPFIX_STACKS_PER_PAGE CPUs */ -#define ESPFIX_MAX_PAGES DIV_ROUND_UP(CONFIG_NR_CPUS, ESPFIX_STACKS_PER_PAGE) +#define ESPFIX_MAX_PAGES \ + __KERNEL_DIV_ROUND_UP(CONFIG_NR_CPUS, ESPFIX_STACKS_PER_PAGE) static void *espfix_pages[ESPFIX_MAX_PAGES]; static __page_aligned_bss pud_t espfix_pud_page[PTRS_PER_PUD] diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c index 6a6dd5a84f22..771c97953d38 100644 --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -42,7 +42,8 @@ #include "irq.h" #include "fpu.h" -#define KVM_HV_MAX_SPARSE_VCPU_SET_BITS DIV_ROUND_UP(KVM_MAX_VCPUS, HV_VCPUS_PER_SPARSE_BANK) +#define KVM_HV_MAX_SPARSE_VCPU_SET_BITS \ + __KERNEL_DIV_ROUND_UP(KVM_MAX_VCPUS, HV_VCPUS_PER_SPARSE_BANK) /* * As per Hyper-V TLFS, extended hypercalls start from 0x8001 diff --git a/crypto/ecc.c b/crypto/ecc.c index 6cf9a945fc6c..50ad2d4ed672 100644 --- a/crypto/ecc.c +++ b/crypto/ecc.c @@ -71,7 +71,7 @@ EXPORT_SYMBOL(ecc_get_curve); void ecc_digits_from_bytes(const u8 *in, unsigned int nbytes, u64 *out, unsigned int ndigits) { - int diff = ndigits - DIV_ROUND_UP_POW2(nbytes, sizeof(u64)); + int diff = ndigits - DIV_ROUND_UP(nbytes, sizeof(u64)); unsigned int o = nbytes & 7; __be64 msd = 0; diff --git a/crypto/ecdsa-p1363.c b/crypto/ecdsa-p1363.c index e0c55c64711c..d668d816d16c 100644 --- a/crypto/ecdsa-p1363.c +++ b/crypto/ecdsa-p1363.c @@ -21,9 +21,9 @@ static int ecdsa_p1363_verify(struct crypto_sig *tfm, const void *digest, unsigned int dlen) { struct ecdsa_p1363_ctx *ctx = crypto_sig_ctx(tfm); - unsigned int keylen = DIV_ROUND_UP_POW2(crypto_sig_keysize(ctx->child), - BITS_PER_BYTE); - unsigned int ndigits = DIV_ROUND_UP_POW2(keylen, sizeof(u64)); + unsigned int keylen = DIV_ROUND_UP(crypto_sig_keysize(ctx->child), + BITS_PER_BYTE); + unsigned int ndigits = DIV_ROUND_UP(keylen, sizeof(u64)); struct ecdsa_raw_sig sig; if (slen != 2 * keylen) @@ -46,8 +46,7 @@ static unsigned int ecdsa_p1363_max_size(struct crypto_sig *tfm) { struct ecdsa_p1363_ctx *ctx = crypto_sig_ctx(tfm); - return 2 * DIV_ROUND_UP_POW2(crypto_sig_keysize(ctx->child), - BITS_PER_BYTE); + return 2 * DIV_ROUND_UP(crypto_sig_keysize(ctx->child), BITS_PER_BYTE); } static unsigned int ecdsa_p1363_digest_size(struct crypto_sig *tfm) diff --git a/crypto/ecdsa-x962.c b/crypto/ecdsa-x962.c index ee71594d10a0..73d4f3e2e5a6 100644 --- a/crypto/ecdsa-x962.c +++ b/crypto/ecdsa-x962.c @@ -81,8 +81,8 @@ static int ecdsa_x962_verify(struct crypto_sig *tfm, struct ecdsa_x962_signature_ctx sig_ctx; int err; - sig_ctx.ndigits = DIV_ROUND_UP_POW2(crypto_sig_keysize(ctx->child), - sizeof(u64) * BITS_PER_BYTE); + sig_ctx.ndigits = DIV_ROUND_UP(crypto_sig_keysize(ctx->child), + sizeof(u64) * BITS_PER_BYTE); err = asn1_ber_decoder(&ecdsasignature_decoder, &sig_ctx, src, slen); if (err < 0) @@ -103,8 +103,7 @@ static unsigned int ecdsa_x962_max_size(struct crypto_sig *tfm) { struct ecdsa_x962_ctx *ctx = crypto_sig_ctx(tfm); struct sig_alg *alg = crypto_sig_alg(ctx->child); - int slen = DIV_ROUND_UP_POW2(crypto_sig_keysize(ctx->child), - BITS_PER_BYTE); + int slen = DIV_ROUND_UP(crypto_sig_keysize(ctx->child), BITS_PER_BYTE); /* * Verify takes ECDSA-Sig-Value (described in RFC 5480) as input, diff --git a/crypto/sig.c b/crypto/sig.c index 53a3dd6fbe3f..c0b8017b40c3 100644 --- a/crypto/sig.c +++ b/crypto/sig.c @@ -104,7 +104,7 @@ static int sig_default_set_key(struct crypto_sig *tfm, static unsigned int sig_default_size(struct crypto_sig *tfm) { - return DIV_ROUND_UP_POW2(crypto_sig_keysize(tfm), BITS_PER_BYTE); + return DIV_ROUND_UP(crypto_sig_keysize(tfm), BITS_PER_BYTE); } static int sig_prepare_alg(struct sig_alg *alg) diff --git a/drivers/accel/qaic/sahara.c b/drivers/accel/qaic/sahara.c index 21d58aed0deb..98fef467897f 100644 --- a/drivers/accel/qaic/sahara.c +++ b/drivers/accel/qaic/sahara.c @@ -39,8 +39,9 @@ #define SAHARA_PACKET_MAX_SIZE 0xffffU /* MHI_MAX_MTU */ #define SAHARA_TRANSFER_MAX_SIZE 0x80000 #define SAHARA_READ_MAX_SIZE 0xfff0U /* Avoid unaligned requests */ -#define SAHARA_NUM_TX_BUF DIV_ROUND_UP(SAHARA_TRANSFER_MAX_SIZE,\ - SAHARA_PACKET_MAX_SIZE) +#define SAHARA_NUM_TX_BUF __KERNEL_DIV_ROUND_UP( \ + SAHARA_TRANSFER_MAX_SIZE, \ + SAHARA_PACKET_MAX_SIZE) #define SAHARA_IMAGE_ID_NONE U32_MAX #define SAHARA_VERSION 2 diff --git a/drivers/cdx/controller/mcdi.h b/drivers/cdx/controller/mcdi.h index 54a65e9760ae..574f1e358107 100644 --- a/drivers/cdx/controller/mcdi.h +++ b/drivers/cdx/controller/mcdi.h @@ -204,7 +204,8 @@ int cdx_mcdi_wait_for_quiescence(struct cdx_mcdi *cdx, * are appropriately aligned, but 64-bit fields are only * 32-bit-aligned. */ -#define MCDI_DECLARE_BUF(_name, _len) struct cdx_dword _name[DIV_ROUND_UP(_len, 4)] = {{0}} +#define MCDI_DECLARE_BUF(_name, _len) \ + struct cdx_dword _name[__KERNEL_DIV_ROUND_UP(_len, 4)] = {{0}} #define _MCDI_PTR(_buf, _offset) \ ((u8 *)(_buf) + (_offset)) #define MCDI_PTR(_buf, _field) \ diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h index 3b5c2af013d0..0be685af435d 100644 --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h @@ -97,7 +97,7 @@ #define ESR_D1 5 #define PRNG_DATA_SIZE (160 / 8) -#define PRNG_SEED_SIZE DIV_ROUND_UP(175, 8) +#define PRNG_SEED_SIZE __KERNEL_DIV_ROUND_UP(175, 8) #define PRNG_LD BIT(17) #define CE_DIE_ID_SHIFT 16 diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h index ae66eb45fb24..7cd10b176591 100644 --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h @@ -80,7 +80,7 @@ #define SS_DIE_ID_MASK 0x07 #define PRNG_DATA_SIZE (160 / 8) -#define PRNG_SEED_SIZE DIV_ROUND_UP(175, 8) +#define PRNG_SEED_SIZE __KERNEL_DIV_ROUND_UP(175, 8) #define MAX_PAD_SIZE 4096 diff --git a/drivers/crypto/sa2ul.h b/drivers/crypto/sa2ul.h index 12c17a68d350..94c53d204e6c 100644 --- a/drivers/crypto/sa2ul.h +++ b/drivers/crypto/sa2ul.h @@ -202,8 +202,7 @@ struct sa_crypto_data { u16 sc_id_start; u16 sc_id_end; u16 sc_id; - unsigned long ctx_bm[DIV_ROUND_UP(SA_MAX_NUM_CTX, - BITS_PER_LONG)]; + unsigned long ctx_bm[BITS_TO_LONGS(SA_MAX_NUM_CTX)]; struct sa_tfm_ctx *ctx; struct dma_chan *dma_rx1; struct dma_chan *dma_rx2; diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index edaedd156a6d..ca13e7d232db 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -84,13 +84,14 @@ struct descriptor { #define CONTEXT_MATCH(regs) ((regs) + 16) #define AR_BUFFER_SIZE (32*1024) -#define AR_BUFFERS_MIN DIV_ROUND_UP(AR_BUFFER_SIZE, PAGE_SIZE) +#define AR_BUFFERS_MIN __KERNEL_DIV_ROUND_UP(AR_BUFFER_SIZE, PAGE_SIZE) /* we need at least two pages for proper list management */ #define AR_BUFFERS (AR_BUFFERS_MIN >= 2 ? AR_BUFFERS_MIN : 2) #define MAX_ASYNC_PAYLOAD 4096 #define MAX_AR_PACKET_SIZE (16 + MAX_ASYNC_PAYLOAD + 4) -#define AR_WRAPAROUND_PAGES DIV_ROUND_UP(MAX_AR_PACKET_SIZE, PAGE_SIZE) +#define AR_WRAPAROUND_PAGES __KERNEL_DIV_ROUND_UP(MAX_AR_PACKET_SIZE, \ + PAGE_SIZE) struct ar_context { struct fw_ohci *ohci; diff --git a/drivers/fpga/ice40-spi.c b/drivers/fpga/ice40-spi.c index 62c30266130d..3698fd0e5d4f 100644 --- a/drivers/fpga/ice40-spi.c +++ b/drivers/fpga/ice40-spi.c @@ -21,7 +21,7 @@ #define ICE40_SPI_RESET_DELAY 1 /* us (>200ns) */ #define ICE40_SPI_HOUSEKEEPING_DELAY 1200 /* us */ -#define ICE40_SPI_NUM_ACTIVATION_BYTES DIV_ROUND_UP(49, 8) +#define ICE40_SPI_NUM_ACTIVATION_BYTES __KERNEL_DIV_ROUND_UP(49, 8) struct ice40_fpga_priv { struct spi_device *dev; diff --git a/drivers/fpga/intel-m10-bmc-sec-update.c b/drivers/fpga/intel-m10-bmc-sec-update.c index 10f678b9ed36..9ab58c35ede3 100644 --- a/drivers/fpga/intel-m10-bmc-sec-update.c +++ b/drivers/fpga/intel-m10-bmc-sec-update.c @@ -160,7 +160,7 @@ DEVICE_ATTR_SEC_REH_RO(sr); DEVICE_ATTR_SEC_REH_RO(pr); #define CSK_BIT_LEN 128U -#define CSK_32ARRAY_SIZE DIV_ROUND_UP(CSK_BIT_LEN, 32) +#define CSK_32ARRAY_SIZE __KERNEL_DIV_ROUND_UP(CSK_BIT_LEN, 32) static ssize_t show_canceled_csk(struct device *dev, u32 addr, char *buf) diff --git a/drivers/gpio/gpio-graniterapids.c b/drivers/gpio/gpio-graniterapids.c index ad6a045fd3d2..98eb705d7f05 100644 --- a/drivers/gpio/gpio-graniterapids.c +++ b/drivers/gpio/gpio-graniterapids.c @@ -30,7 +30,7 @@ #define GNR_NUM_PINS 128 #define GNR_PINS_PER_REG 32 -#define GNR_NUM_REGS DIV_ROUND_UP(GNR_NUM_PINS, GNR_PINS_PER_REG) +#define GNR_NUM_REGS __KERNEL_DIV_ROUND_UP(GNR_NUM_PINS, GNR_PINS_PER_REG) #define GNR_CFG_PADBAR 0x00 #define GNR_CFG_LOCK_OFFSET 0x04 diff --git a/drivers/gpio/gpio-stmpe.c b/drivers/gpio/gpio-stmpe.c index 75a3633ceddb..f820e98a87be 100644 --- a/drivers/gpio/gpio-stmpe.c +++ b/drivers/gpio/gpio-stmpe.c @@ -381,7 +381,7 @@ static irqreturn_t stmpe_gpio_irq(int irq, void *dev) struct stmpe *stmpe = stmpe_gpio->stmpe; u8 statmsbreg; int num_banks = DIV_ROUND_UP(stmpe->num_gpios, 8); - u8 status[DIV_ROUND_UP(MAX_GPIOS, 8)]; + u8 status[__KERNEL_DIV_ROUND_UP(MAX_GPIOS, 8)]; int ret; int i; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 69895fccb474..5fe7464d340a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -516,7 +516,7 @@ struct amdgpu_wb { volatile uint32_t *wb; uint64_t gpu_addr; u32 num_wb; /* Number of wb slots actually reserved for amdgpu. */ - unsigned long used[DIV_ROUND_UP(AMDGPU_MAX_WB, BITS_PER_LONG)]; + unsigned long used[BITS_TO_LONGS(AMDGPU_MAX_WB)]; spinlock_t lock; }; diff --git a/drivers/gpu/drm/i915/gt/intel_sseu.h b/drivers/gpu/drm/i915/gt/intel_sseu.h index d7e8c374f153..c653805b32e2 100644 --- a/drivers/gpu/drm/i915/gt/intel_sseu.h +++ b/drivers/gpu/drm/i915/gt/intel_sseu.h @@ -45,7 +45,7 @@ struct drm_printer; #define GEN_SS_MASK_SIZE SSEU_MAX(I915_MAX_SS_FUSE_BITS, \ GEN_MAX_HSW_SLICES * GEN_MAX_SS_PER_HSW_SLICE) -#define GEN_SSEU_STRIDE(max_entries) DIV_ROUND_UP(max_entries, BITS_PER_BYTE) +#define GEN_SSEU_STRIDE(max_entries) BITS_TO_BYTES(max_entries) #define GEN_MAX_SUBSLICE_STRIDE GEN_SSEU_STRIDE(GEN_SS_MASK_SIZE) #define GEN_MAX_EU_STRIDE GEN_SSEU_STRIDE(GEN_MAX_EUS_PER_SS) diff --git a/drivers/gpu/drm/i915/i915_perf_types.h b/drivers/gpu/drm/i915/i915_perf_types.h index 39fb6ce4a7ef..ba02c7c64bfb 100644 --- a/drivers/gpu/drm/i915/i915_perf_types.h +++ b/drivers/gpu/drm/i915/i915_perf_types.h @@ -502,7 +502,7 @@ struct i915_perf { * Use a format mask to store the supported formats * for a platform. */ -#define FORMAT_MASK_SIZE DIV_ROUND_UP(I915_OA_FORMAT_MAX - 1, BITS_PER_LONG) +#define FORMAT_MASK_SIZE BITS_TO_LONGS(I915_OA_FORMAT_MAX - 1) unsigned long format_mask[FORMAT_MASK_SIZE]; atomic64_t noa_programming_delay; diff --git a/drivers/gpu/drm/imagination/pvr_fw_mips.h b/drivers/gpu/drm/imagination/pvr_fw_mips.h index a0c5c41c8aa2..e6a17989bd1b 100644 --- a/drivers/gpu/drm/imagination/pvr_fw_mips.h +++ b/drivers/gpu/drm/imagination/pvr_fw_mips.h @@ -13,7 +13,7 @@ /* Forward declaration from pvr_gem.h. */ struct pvr_gem_object; -#define PVR_MIPS_PT_PAGE_COUNT DIV_ROUND_UP(ROGUE_MIPSFW_MAX_NUM_PAGETABLE_PAGES * ROGUE_MIPSFW_PAGE_SIZE_4K, PAGE_SIZE) +#define PVR_MIPS_PT_PAGE_COUNT __KERNEL_DIV_ROUND_UP(ROGUE_MIPSFW_MAX_NUM_PAGETABLE_PAGES * ROGUE_MIPSFW_PAGE_SIZE_4K, PAGE_SIZE) /** * struct pvr_fw_mips_data - MIPS-specific data diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.h b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.h index 5cfa2bb7ad93..c693f34ee52e 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.h +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.h @@ -89,7 +89,7 @@ struct rcar_du_device_info { }; #define RCAR_DU_MAX_CRTCS 4 -#define RCAR_DU_MAX_GROUPS DIV_ROUND_UP(RCAR_DU_MAX_CRTCS, 2) +#define RCAR_DU_MAX_GROUPS __KERNEL_DIV_ROUND_UP(RCAR_DU_MAX_CRTCS, 2) #define RCAR_DU_MAX_VSPS 4 #define RCAR_DU_MAX_LVDS 2 #define RCAR_DU_MAX_DSI 2 diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c index 6ea04cc8f324..9c8b6a7d6dbc 100644 --- a/drivers/gpu/drm/tests/drm_framebuffer_test.c +++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c @@ -215,35 +215,36 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = { }, { .buffer_created = 1, .name = "YVU420 Max sizes", .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_YVU420, - .handles = { 1, 1, 1 }, .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2), - DIV_ROUND_UP(MAX_WIDTH, 2) }, + .handles = { 1, 1, 1 }, .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2), + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) }, } }, { .buffer_created = 0, .name = "YVU420 Invalid pitch", .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_YVU420, - .handles = { 1, 1, 1 }, .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2) - 1, - DIV_ROUND_UP(MAX_WIDTH, 2) }, + .handles = { 1, 1, 1 }, .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) - 1, + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) }, } }, { .buffer_created = 1, .name = "YVU420 Different pitches", .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_YVU420, - .handles = { 1, 1, 1 }, .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2) + 1, - DIV_ROUND_UP(MAX_WIDTH, 2) + 7 }, + .handles = { 1, 1, 1 }, .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) + 1, + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) + 7 }, } }, { .buffer_created = 1, .name = "YVU420 Different buffer offsets/pitches", .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_YVU420, .handles = { 1, 1, 1 }, .offsets = { MAX_WIDTH, MAX_WIDTH + MAX_WIDTH * MAX_HEIGHT, MAX_WIDTH + 2 * MAX_WIDTH * MAX_HEIGHT }, - .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2) + 1, - DIV_ROUND_UP(MAX_WIDTH, 2) + 7 }, + .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) + 1, + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) + 7 }, } }, { .buffer_created = 0, .name = "YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS", .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_YVU420, .handles = { 1, 1, 1 }, .modifier = { AFBC_FORMAT_MOD_SPARSE, 0, 0 }, - .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2), DIV_ROUND_UP(MAX_WIDTH, 2) }, + .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2), + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) }, } }, { .buffer_created = 0, @@ -251,7 +252,8 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = { .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_YVU420, .handles = { 1, 1, 1 }, .modifier = { AFBC_FORMAT_MOD_SPARSE, AFBC_FORMAT_MOD_SPARSE, 0 }, - .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2), DIV_ROUND_UP(MAX_WIDTH, 2) }, + .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2), + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) }, } }, { .buffer_created = 0, @@ -259,7 +261,8 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = { .cmd = { .width = MAX_WIDTH, .height = MAX_HEIGHT, .pixel_format = DRM_FORMAT_YVU420, .handles = { 1, 1, 1 }, .flags = DRM_MODE_FB_MODIFIERS, .modifier = { AFBC_FORMAT_MOD_SPARSE, AFBC_FORMAT_MOD_SPARSE, 0 }, - .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2), DIV_ROUND_UP(MAX_WIDTH, 2) }, + .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2), + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) }, } }, { .buffer_created = 1, .name = "YVU420 Valid modifier", @@ -267,7 +270,8 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = { .handles = { 1, 1, 1 }, .flags = DRM_MODE_FB_MODIFIERS, .modifier = { AFBC_FORMAT_MOD_SPARSE, AFBC_FORMAT_MOD_SPARSE, AFBC_FORMAT_MOD_SPARSE }, - .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2), DIV_ROUND_UP(MAX_WIDTH, 2) }, + .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2), + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) }, } }, { .buffer_created = 0, .name = "YVU420 Different modifiers per plane", @@ -275,7 +279,8 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = { .handles = { 1, 1, 1 }, .flags = DRM_MODE_FB_MODIFIERS, .modifier = { AFBC_FORMAT_MOD_SPARSE, AFBC_FORMAT_MOD_SPARSE | AFBC_FORMAT_MOD_YTR, AFBC_FORMAT_MOD_SPARSE }, - .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2), DIV_ROUND_UP(MAX_WIDTH, 2) }, + .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2), + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) }, } }, { .buffer_created = 0, .name = "YVU420 Modifier for inexistent plane", @@ -283,7 +288,8 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = { .handles = { 1, 1, 1 }, .flags = DRM_MODE_FB_MODIFIERS, .modifier = { AFBC_FORMAT_MOD_SPARSE, AFBC_FORMAT_MOD_SPARSE, AFBC_FORMAT_MOD_SPARSE, AFBC_FORMAT_MOD_SPARSE }, - .pitches = { MAX_WIDTH, DIV_ROUND_UP(MAX_WIDTH, 2), DIV_ROUND_UP(MAX_WIDTH, 2) }, + .pitches = { MAX_WIDTH, __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2), + __KERNEL_DIV_ROUND_UP(MAX_WIDTH, 2) }, } }, { .buffer_created = 0, .name = "YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)", diff --git a/drivers/input/rmi4/rmi_f30.c b/drivers/input/rmi4/rmi_f30.c index 35045f161dc2..02a8aaf5fa3a 100644 --- a/drivers/input/rmi4/rmi_f30.c +++ b/drivers/input/rmi4/rmi_f30.c @@ -30,7 +30,7 @@ #define RMI_F30_CTRL_10_NUM_MECH_MOUSE_BTNS 0x03 #define RMI_F30_CTRL_MAX_REGS 32 -#define RMI_F30_CTRL_MAX_BYTES DIV_ROUND_UP(RMI_F30_CTRL_MAX_REGS, 8) +#define RMI_F30_CTRL_MAX_BYTES BITS_TO_BYTES(RMI_F30_CTRL_MAX_REGS) #define RMI_F30_CTRL_MAX_REG_BLOCKS 11 #define RMI_F30_CTRL_REGS_MAX_SIZE (RMI_F30_CTRL_MAX_BYTES \ diff --git a/drivers/input/rmi4/rmi_f3a.c b/drivers/input/rmi4/rmi_f3a.c index 0e8baed84dbb..34a6c511f95d 100644 --- a/drivers/input/rmi4/rmi_f3a.c +++ b/drivers/input/rmi4/rmi_f3a.c @@ -10,7 +10,8 @@ #include "rmi_driver.h" #define RMI_F3A_MAX_GPIO_COUNT 128 -#define RMI_F3A_MAX_REG_SIZE DIV_ROUND_UP(RMI_F3A_MAX_GPIO_COUNT, 8) +#define RMI_F3A_MAX_REG_SIZE __KERNEL_DIV_ROUND_UP( \ + RMI_F3A_MAX_GPIO_COUNT, 8) /* Defs for Query 0 */ #define RMI_F3A_GPIO_COUNT 0x7F diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c index 6503573557fd..b24445c9bc86 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c @@ -74,10 +74,10 @@ struct gic_chip_data { void __iomem *raw_cpu_base; u32 percpu_offset; #if defined(CONFIG_CPU_PM) || defined(CONFIG_ARM_GIC_PM) - u32 saved_spi_enable[DIV_ROUND_UP(1020, 32)]; - u32 saved_spi_active[DIV_ROUND_UP(1020, 32)]; - u32 saved_spi_conf[DIV_ROUND_UP(1020, 16)]; - u32 saved_spi_target[DIV_ROUND_UP(1020, 4)]; + u32 saved_spi_enable[__KERNEL_DIV_ROUND_UP(1020, 32)]; + u32 saved_spi_active[__KERNEL_DIV_ROUND_UP(1020, 32)]; + u32 saved_spi_conf[__KERNEL_DIV_ROUND_UP(1020, 16)]; + u32 saved_spi_target[__KERNEL_DIV_ROUND_UP(1020, 4)]; u32 __percpu *saved_ppi_enable; u32 __percpu *saved_ppi_active; u32 __percpu *saved_ppi_conf; diff --git a/drivers/irqchip/irq-mst-intc.c b/drivers/irqchip/irq-mst-intc.c index f6133ae28155..2c03aad7fc15 100644 --- a/drivers/irqchip/irq-mst-intc.c +++ b/drivers/irqchip/irq-mst-intc.c @@ -32,7 +32,7 @@ struct mst_intc_chip_data { bool no_eoi; #ifdef CONFIG_PM_SLEEP struct list_head entry; - u16 saved_polarity_conf[DIV_ROUND_UP(MST_INTC_MAX_IRQS, 16)]; + u16 saved_polarity_conf[__KERNEL_DIV_ROUND_UP(MST_INTC_MAX_IRQS, 16)]; #endif }; diff --git a/drivers/media/firewire/firedtv-fw.c b/drivers/media/firewire/firedtv-fw.c index 5f6e97a8d1c0..f952e8ba0878 100644 --- a/drivers/media/firewire/firedtv-fw.c +++ b/drivers/media/firewire/firedtv-fw.c @@ -71,7 +71,8 @@ int fdtv_write(struct firedtv *fdtv, u64 addr, void *data, size_t len) #define MAX_PACKET_SIZE 1024 /* 776, rounded up to 2^n */ #define PACKETS_PER_PAGE (PAGE_SIZE / MAX_PACKET_SIZE) #define N_PACKETS 64 /* buffer size */ -#define N_PAGES DIV_ROUND_UP(N_PACKETS, PACKETS_PER_PAGE) +#define N_PAGES __KERNEL_DIV_ROUND_UP(N_PACKETS, \ + PACKETS_PER_PAGE) #define IRQ_INTERVAL 16 struct fdtv_ir_context { diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2.c b/drivers/media/pci/intel/ipu3/ipu3-cio2.c index dd73d534ac49..1ba4d9004373 100644 --- a/drivers/media/pci/intel/ipu3/ipu3-cio2.c +++ b/drivers/media/pci/intel/ipu3/ipu3-cio2.c @@ -350,8 +350,8 @@ static int cio2_hw_init(struct cio2_device *cio2, struct cio2_queue *q) static const int NUM_VCS = 4; static const int SID; /* Stream id */ static const int ENTRY; - static const int FBPT_WIDTH = DIV_ROUND_UP(CIO2_MAX_LOPS, - CIO2_FBPT_SUBENTRY_UNIT); + static const int FBPT_WIDTH = __KERNEL_DIV_ROUND_UP(CIO2_MAX_LOPS, + CIO2_FBPT_SUBENTRY_UNIT); const u32 num_buffers1 = CIO2_MAX_BUFFERS - 1; const struct ipu3_cio2_fmt *fmt; void __iomem *const base = cio2->base; diff --git a/drivers/media/pci/pt3/pt3.h b/drivers/media/pci/pt3/pt3.h index a53124438f51..a521eca067b6 100644 --- a/drivers/media/pci/pt3/pt3.h +++ b/drivers/media/pci/pt3/pt3.h @@ -66,7 +66,7 @@ struct pt3_i2cbuf { #define DESCS_IN_PAGE (PAGE_SIZE / sizeof(struct xfer_desc)) #define MAX_NUM_XFERS (MAX_DATA_BUFS * DATA_BUF_XFERS) -#define MAX_DESC_BUFS DIV_ROUND_UP(MAX_NUM_XFERS, DESCS_IN_PAGE) +#define MAX_DESC_BUFS __KERNEL_DIV_ROUND_UP(MAX_NUM_XFERS, DESCS_IN_PAGE) /* DMA transfer description. * device is passed a pointer to this struct, dma-reads it, diff --git a/drivers/media/platform/nxp/dw100/dw100.c b/drivers/media/platform/nxp/dw100/dw100.c index 66582e7f92fc..831db5899b5c 100644 --- a/drivers/media/platform/nxp/dw100/dw100.c +++ b/drivers/media/platform/nxp/dw100/dw100.c @@ -41,8 +41,8 @@ #define DW100_DEF_W 640u #define DW100_DEF_H 480u -#define DW100_DEF_LUT_W (DIV_ROUND_UP(DW100_DEF_W, DW100_BLOCK_SIZE) + 1) -#define DW100_DEF_LUT_H (DIV_ROUND_UP(DW100_DEF_H, DW100_BLOCK_SIZE) + 1) +#define DW100_DEF_LUT_W (__KERNEL_DIV_ROUND_UP(DW100_DEF_W, DW100_BLOCK_SIZE) + 1) +#define DW100_DEF_LUT_H (__KERNEL_DIV_ROUND_UP(DW100_DEF_H, DW100_BLOCK_SIZE) + 1) /* * 16 controls have been reserved for this driver for future extension, but diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c index 87496c1cb8bc..a32c673e605a 100644 --- a/drivers/mfd/twl4030-irq.c +++ b/drivers/mfd/twl4030-irq.c @@ -82,9 +82,9 @@ static int nr_sih_modules; .module = TWL4030_MODULE_ ## modname, \ .control_offset = TWL4030_ ## modname ## _SIH_CTRL, \ .bits = nbits, \ - .bytes_ixr = DIV_ROUND_UP(nbits, 8), \ + .bytes_ixr = BITS_TO_BYTES(nbits), \ .edr_offset = TWL4030_ ## modname ## _EDR, \ - .bytes_edr = DIV_ROUND_UP((2*(nbits)), 8), \ + .bytes_edr = BITS_TO_BYTES(2*(nbits)), \ .irq_lines = 2, \ .mask = { { \ .isr_offset = TWL4030_ ## modname ## _ISR1, \ diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c index 175bf9b13058..703cdec20780 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c +++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c @@ -3155,9 +3155,8 @@ int t4_get_exprom_version(struct adapter *adap, u32 *vers) struct exprom_header { unsigned char hdr_arr[16]; /* must start with 0x55aa */ unsigned char hdr_ver[4]; /* Expansion ROM version */ - } *hdr; - u32 exprom_header_buf[DIV_ROUND_UP(sizeof(struct exprom_header), - sizeof(u32))]; + } __packed *hdr; + u32 exprom_header_buf[sizeof(struct exprom_header) / sizeof(u32)]; int ret; ret = t4_read_flash(adap, FLASH_EXP_ROM_START, diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c index 5b1d746e6563..f01f1fd772c5 100644 --- a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c +++ b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c @@ -111,7 +111,8 @@ enum { sizeof(struct cpl_tx_pkt_core)) / sizeof(__be64), ETHTXQ_MAX_FLITS = ETHTXQ_MAX_SGL_LEN + ETHTXQ_MAX_HDR, - ETHTXQ_STOP_THRES = 1 + DIV_ROUND_UP(ETHTXQ_MAX_FLITS, TXD_PER_EQ_UNIT), + ETHTXQ_STOP_THRES = 1 + __KERNEL_DIV_ROUND_UP(ETHTXQ_MAX_FLITS, + TXD_PER_EQ_UNIT), /* * Max TX descriptor space we allow for an Ethernet packet to be diff --git a/drivers/net/ethernet/cisco/enic/vnic_rq.h b/drivers/net/ethernet/cisco/enic/vnic_rq.h index 0bc595abc03b..3882b00d397e 100644 --- a/drivers/net/ethernet/cisco/enic/vnic_rq.h +++ b/drivers/net/ethernet/cisco/enic/vnic_rq.h @@ -49,7 +49,7 @@ struct vnic_rq_ctrl { #define VNIC_RQ_BUF_BLK_SZ(entries) \ (VNIC_RQ_BUF_BLK_ENTRIES(entries) * sizeof(struct vnic_rq_buf)) #define VNIC_RQ_BUF_BLKS_NEEDED(entries) \ - DIV_ROUND_UP(entries, VNIC_RQ_BUF_BLK_ENTRIES(entries)) + __KERNEL_DIV_ROUND_UP(entries, VNIC_RQ_BUF_BLK_ENTRIES(entries)) #define VNIC_RQ_BUF_BLKS_MAX VNIC_RQ_BUF_BLKS_NEEDED(4096) struct vnic_rq_buf { diff --git a/drivers/net/ethernet/cisco/enic/vnic_wq.h b/drivers/net/ethernet/cisco/enic/vnic_wq.h index 75c526911074..daf62fb30455 100644 --- a/drivers/net/ethernet/cisco/enic/vnic_wq.h +++ b/drivers/net/ethernet/cisco/enic/vnic_wq.h @@ -61,7 +61,7 @@ struct vnic_wq_buf { #define VNIC_WQ_BUF_BLK_SZ(entries) \ (VNIC_WQ_BUF_BLK_ENTRIES(entries) * sizeof(struct vnic_wq_buf)) #define VNIC_WQ_BUF_BLKS_NEEDED(entries) \ - DIV_ROUND_UP(entries, VNIC_WQ_BUF_BLK_ENTRIES(entries)) + __KERNEL_DIV_ROUND_UP(entries, VNIC_WQ_BUF_BLK_ENTRIES(entries)) #define VNIC_WQ_BUF_BLKS_MAX VNIC_WQ_BUF_BLKS_NEEDED(4096) struct vnic_wq { diff --git a/drivers/net/ethernet/google/gve/gve.h b/drivers/net/ethernet/google/gve/gve.h index 8167cc5fb0df..a5caf9e35bdf 100644 --- a/drivers/net/ethernet/google/gve/gve.h +++ b/drivers/net/ethernet/google/gve/gve.h @@ -84,7 +84,8 @@ /* 2K buffers for DQO-QPL */ #define GVE_TX_BUF_SIZE_DQO BIT(GVE_TX_BUF_SHIFT_DQO) #define GVE_TX_BUFS_PER_PAGE_DQO (PAGE_SIZE >> GVE_TX_BUF_SHIFT_DQO) -#define GVE_MAX_TX_BUFS_PER_PKT (DIV_ROUND_UP(GVE_DQO_TX_MAX, GVE_TX_BUF_SIZE_DQO)) +#define GVE_MAX_TX_BUFS_PER_PKT (__KERNEL_DIV_ROUND_UP(GVE_DQO_TX_MAX, \ + GVE_TX_BUF_SIZE_DQO)) /* If number of free/recyclable buffers are less than this threshold; driver * allocs and uses a non-qpl page on the receive path of DQO QPL to free diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h index b9fc719880bb..4be5d7f11e97 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h @@ -637,7 +637,7 @@ struct key_info { }; #define MAX_KEY_LENGTH 400 -#define MAX_KEY_DWORDS DIV_ROUND_UP(MAX_KEY_LENGTH / 8, 4) +#define MAX_KEY_DWORDS __KERNEL_DIV_ROUND_UP(MAX_KEY_LENGTH / 8, 4) #define MAX_KEY_BYTES (MAX_KEY_DWORDS * 4) #define MAX_META_DATA_LENGTH 32 diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_csr.h b/drivers/net/ethernet/meta/fbnic/fbnic_csr.h index 02bb81b3c506..85f39bfa3557 100644 --- a/drivers/net/ethernet/meta/fbnic/fbnic_csr.h +++ b/drivers/net/ethernet/meta/fbnic/fbnic_csr.h @@ -628,9 +628,9 @@ enum { #define FBNIC_RPC_RSS_KEY(n) (0x0840c + (n)) /* 0x21030 + 4*n */ #define FBNIC_RPC_RSS_KEY_BIT_LEN 425 #define FBNIC_RPC_RSS_KEY_BYTE_LEN \ - DIV_ROUND_UP(FBNIC_RPC_RSS_KEY_BIT_LEN, 8) + BITS_TO_BYTES(FBNIC_RPC_RSS_KEY_BIT_LEN) #define FBNIC_RPC_RSS_KEY_DWORD_LEN \ - DIV_ROUND_UP(FBNIC_RPC_RSS_KEY_BIT_LEN, 32) + BITS_TO_U32(FBNIC_RPC_RSS_KEY_BIT_LEN) #define FBNIC_RPC_RSS_KEY_LAST_IDX \ (FBNIC_RPC_RSS_KEY_DWORD_LEN - 1) #define FBNIC_RPC_RSS_KEY_LAST_MASK \ diff --git a/drivers/net/ethernet/qlogic/qed/qed_debug.c b/drivers/net/ethernet/qlogic/qed/qed_debug.c index 464a72afb758..4de0c94e82c8 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_debug.c +++ b/drivers/net/ethernet/qlogic/qed/qed_debug.c @@ -388,7 +388,7 @@ struct split_type_defs { #define BYTES_IN_DWORD sizeof(u32) /* In the macros below, size and offset are specified in bits */ -#define CEIL_DWORDS(size) DIV_ROUND_UP(size, 32) +#define CEIL_DWORDS(size) BITS_TO_U32(size) #define FIELD_BIT_OFFSET(type, field) type ## _ ## field ## _ ## OFFSET #define FIELD_BIT_SIZE(type, field) type ## _ ## field ## _ ## SIZE #define FIELD_DWORD_OFFSET(type, field) \ diff --git a/drivers/net/ethernet/sfc/falcon/falcon.c b/drivers/net/ethernet/sfc/falcon/falcon.c index 4af56333ea49..2bb785e95f7e 100644 --- a/drivers/net/ethernet/sfc/falcon/falcon.c +++ b/drivers/net/ethernet/sfc/falcon/falcon.c @@ -368,7 +368,7 @@ static const struct i2c_algo_bit_data falcon_i2c_bit_operations = { .getscl = falcon_getscl, .udelay = 5, /* Wait up to 50 ms for target to let us pull SCL high */ - .timeout = DIV_ROUND_UP(HZ, 20), + .timeout = __KERNEL_DIV_ROUND_UP(HZ, 20), }; static void falcon_push_irq_moderation(struct ef4_channel *channel) diff --git a/drivers/net/ethernet/sfc/mcdi.h b/drivers/net/ethernet/sfc/mcdi.h index cdb17d7c147f..748b7f095090 100644 --- a/drivers/net/ethernet/sfc/mcdi.h +++ b/drivers/net/ethernet/sfc/mcdi.h @@ -182,9 +182,9 @@ void efx_mcdi_sensor_event(struct efx_nic *efx, efx_qword_t *ev); * 32-bit-aligned. Also, on Siena we must copy to the MC shared * memory strictly 32 bits at a time, so add any necessary padding. */ -#define MCDI_TX_BUF_LEN(_len) DIV_ROUND_UP((_len), 4) +#define MCDI_TX_BUF_LEN(_len) __KERNEL_DIV_ROUND_UP((_len), 4) #define _MCDI_DECLARE_BUF(_name, _len) \ - efx_dword_t _name[DIV_ROUND_UP(_len, 4)] + efx_dword_t _name[__KERNEL_DIV_ROUND_UP(_len, 4)] #define MCDI_DECLARE_BUF(_name, _len) \ _MCDI_DECLARE_BUF(_name, _len) = {{{0}}} #define MCDI_DECLARE_BUF_ERR(_name) \ diff --git a/drivers/net/ethernet/sfc/siena/mcdi.h b/drivers/net/ethernet/sfc/siena/mcdi.h index 06f38e5e6832..55ca192ff6ef 100644 --- a/drivers/net/ethernet/sfc/siena/mcdi.h +++ b/drivers/net/ethernet/sfc/siena/mcdi.h @@ -192,9 +192,9 @@ void efx_siena_mcdi_sensor_event(struct efx_nic *efx, efx_qword_t *ev); * 32-bit-aligned. Also, on Siena we must copy to the MC shared * memory strictly 32 bits at a time, so add any necessary padding. */ -#define MCDI_TX_BUF_LEN(_len) DIV_ROUND_UP((_len), 4) +#define MCDI_TX_BUF_LEN(_len) __KERNEL_DIV_ROUND_UP((_len), 4) #define _MCDI_DECLARE_BUF(_name, _len) \ - efx_dword_t _name[DIV_ROUND_UP(_len, 4)] + efx_dword_t _name[__KERNEL_DIV_ROUND_UP(_len, 4)] #define MCDI_DECLARE_BUF(_name, _len) \ _MCDI_DECLARE_BUF(_name, _len) = {{{0}}} #define MCDI_DECLARE_BUF_ERR(_name) \ diff --git a/drivers/net/ethernet/sfc/siena/ptp.c b/drivers/net/ethernet/sfc/siena/ptp.c index 062c77c92077..395bc99b865e 100644 --- a/drivers/net/ethernet/sfc/siena/ptp.c +++ b/drivers/net/ethernet/sfc/siena/ptp.c @@ -166,7 +166,7 @@ enum ptp_packet_state { * whether that is of no interest. */ struct efx_ptp_match { - u32 words[DIV_ROUND_UP(PTP_V1_UUID_LENGTH, 4)]; + u32 words[__KERNEL_DIV_ROUND_UP(PTP_V1_UUID_LENGTH, 4)]; unsigned long expiry; enum ptp_packet_state state; }; diff --git a/drivers/net/ethernet/ti/cpsw_ale.h b/drivers/net/ethernet/ti/cpsw_ale.h index 87b7d1b3a34a..330156ac5314 100644 --- a/drivers/net/ethernet/ti/cpsw_ale.h +++ b/drivers/net/ethernet/ti/cpsw_ale.h @@ -154,7 +154,7 @@ enum cpsw_ale_port_state { #define ALE_MCAST_FWD_2 3 #define ALE_ENTRY_BITS 68 -#define ALE_ENTRY_WORDS DIV_ROUND_UP(ALE_ENTRY_BITS, 32) +#define ALE_ENTRY_WORDS BITS_TO_U32(ALE_ENTRY_BITS) struct cpsw_ale *cpsw_ale_create(struct cpsw_ale_params *params); diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h index 132148f7b107..477af5db2451 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76.h +++ b/drivers/net/wireless/mediatek/mt76/mt76.h @@ -729,7 +729,7 @@ struct mt76_testmode_ops { struct mt76_testmode_data { enum mt76_testmode_state state; - u32 param_set[DIV_ROUND_UP(NUM_MT76_TM_ATTRS, 32)]; + u32 param_set[__KERNEL_DIV_ROUND_UP(NUM_MT76_TM_ATTRS, 32)]; struct sk_buff *tx_skb; u32 tx_count; @@ -914,7 +914,7 @@ struct mt76_dev { /* spinclock used to protect wcid pktid linked list */ spinlock_t status_lock; - u32 wcid_mask[DIV_ROUND_UP(MT76_N_WCIDS, 32)]; + u32 wcid_mask[__KERNEL_DIV_ROUND_UP(MT76_N_WCIDS, 32)]; u64 vif_mask; diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c b/drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c index 4de45a56812d..3e2c35ef7acc 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c @@ -15,7 +15,7 @@ #include "eeprom.h" #include "../mt76x02_phy.h" -#define MT_MAP_READS DIV_ROUND_UP(MT_EFUSE_USAGE_MAP_SIZE, 16) +#define MT_MAP_READS __KERNEL_DIV_ROUND_UP(MT_EFUSE_USAGE_MAP_SIZE, 16) static int mt76x0_efuse_physical_size_check(struct mt76x02_dev *dev) { diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c index ef959e66db7c..906d808824b9 100644 --- a/drivers/perf/arm-cmn.c +++ b/drivers/perf/arm-cmn.c @@ -593,7 +593,7 @@ static void arm_cmn_debugfs_init(struct arm_cmn *cmn, int id) {} struct arm_cmn_hw_event { struct arm_cmn_node *dn; - u64 dtm_idx[DIV_ROUND_UP(CMN_MAX_NODES_PER_EVENT * 2, 64)]; + u64 dtm_idx[__KERNEL_DIV_ROUND_UP(CMN_MAX_NODES_PER_EVENT * 2, 64)]; s8 dtc_idx[CMN_MAX_DTCS]; u8 num_dns; u8 dtm_offset; diff --git a/drivers/scsi/fnic/vnic_rq.h b/drivers/scsi/fnic/vnic_rq.h index 1066255de808..e0bc651f78c0 100644 --- a/drivers/scsi/fnic/vnic_rq.h +++ b/drivers/scsi/fnic/vnic_rq.h @@ -64,7 +64,7 @@ struct vnic_rq_ctrl { #define VNIC_RQ_BUF_BLK_SZ \ (VNIC_RQ_BUF_BLK_ENTRIES * sizeof(struct vnic_rq_buf)) #define VNIC_RQ_BUF_BLKS_NEEDED(entries) \ - DIV_ROUND_UP(entries, VNIC_RQ_BUF_BLK_ENTRIES) + __KERNEL_DIV_ROUND_UP(entries, VNIC_RQ_BUF_BLK_ENTRIES) #define VNIC_RQ_BUF_BLKS_MAX VNIC_RQ_BUF_BLKS_NEEDED(4096) struct vnic_rq_buf { diff --git a/drivers/scsi/fnic/vnic_wq.h b/drivers/scsi/fnic/vnic_wq.h index 041618e13ce2..ab0b04f6c2a7 100644 --- a/drivers/scsi/fnic/vnic_wq.h +++ b/drivers/scsi/fnic/vnic_wq.h @@ -69,7 +69,7 @@ struct vnic_wq_buf { #define VNIC_WQ_BUF_BLK_SZ \ (VNIC_WQ_BUF_BLK_ENTRIES * sizeof(struct vnic_wq_buf)) #define VNIC_WQ_BUF_BLKS_NEEDED(entries) \ - DIV_ROUND_UP(entries, VNIC_WQ_BUF_BLK_ENTRIES) + __KERNEL_DIV_ROUND_UP(entries, VNIC_WQ_BUF_BLK_ENTRIES) #define VNIC_WQ_BUF_BLKS_MAX VNIC_WQ_BUF_BLKS_NEEDED(4096) struct vnic_wq { diff --git a/drivers/scsi/snic/vnic_wq.h b/drivers/scsi/snic/vnic_wq.h index 1415da4b68dc..6cfe512eb2d0 100644 --- a/drivers/scsi/snic/vnic_wq.h +++ b/drivers/scsi/snic/vnic_wq.h @@ -52,9 +52,7 @@ struct vnic_wq_buf { #define VNIC_WQ_BUF_BLK_SZ \ (VNIC_WQ_BUF_DFLT_BLK_ENTRIES * sizeof(struct vnic_wq_buf)) #define VNIC_WQ_BUF_BLKS_NEEDED(entries) \ - DIV_ROUND_UP(entries, VNIC_WQ_BUF_DFLT_BLK_ENTRIES) -#define VNIC_WQ_BUF_BLKS_NEEDED(entries) \ - DIV_ROUND_UP(entries, VNIC_WQ_BUF_DFLT_BLK_ENTRIES) + __KERNEL_DIV_ROUND_UP(entries, VNIC_WQ_BUF_DFLT_BLK_ENTRIES) #define VNIC_WQ_BUF_BLKS_MAX VNIC_WQ_BUF_BLKS_NEEDED(4096) struct vnic_wq { diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c index 51b3124b0d56..184d46b822d8 100644 --- a/drivers/xen/xenbus/xenbus_client.c +++ b/drivers/xen/xenbus/xenbus_client.c @@ -49,7 +49,8 @@ #include "xenbus.h" -#define XENBUS_PAGES(_grants) (DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE)) +#define XENBUS_PAGES(_grants) (__KERNEL_DIV_ROUND_UP(_grants, \ + XEN_PFN_PER_PAGE)) #define XENBUS_MAX_RING_PAGES (XENBUS_PAGES(XENBUS_MAX_RING_GRANTS)) diff --git a/fs/ceph/crypto.h b/fs/ceph/crypto.h index d0768239a1c9..8df9c4d91993 100644 --- a/fs/ceph/crypto.h +++ b/fs/ceph/crypto.h @@ -89,7 +89,7 @@ static inline u32 ceph_fscrypt_auth_len(struct ceph_fscrypt_auth *fa) */ #define CEPH_NOHASH_NAME_MAX (180 - SHA256_DIGEST_SIZE) -#define CEPH_BASE64_CHARS(nbytes) DIV_ROUND_UP((nbytes) * 4, 3) +#define CEPH_BASE64_CHARS(nbytes) __KERNEL_DIV_ROUND_UP((nbytes) * 4, 3) int ceph_base64_encode(const u8 *src, int srclen, char *dst); int ceph_base64_decode(const char *src, int srclen, u8 *dst); diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 54b3421501e9..091386905d06 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -5010,7 +5010,8 @@ static void check_new_map(struct ceph_mds_client *mdsc, int i, j, err; int oldstate, newstate; struct ceph_mds_session *s; - unsigned long targets[DIV_ROUND_UP(CEPH_MAX_MDS, sizeof(unsigned long))] = {0}; + unsigned long targets[__KERNEL_DIV_ROUND_UP(CEPH_MAX_MDS, + sizeof(unsigned long))] = {0}; struct ceph_client *cl = mdsc->fsc->client; doutc(cl, "new %u old %u\n", newmap->m_epoch, oldmap->m_epoch); diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 2b123b070a42..4cd1390ef25e 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -7,7 +7,8 @@ #include "compress.h" #include <linux/lz4.h> -#define LZ4_MAX_DISTANCE_PAGES (DIV_ROUND_UP(LZ4_DISTANCE_MAX, PAGE_SIZE) + 1) +#define LZ4_MAX_DISTANCE_PAGES \ + (__KERNEL_DIV_ROUND_UP(LZ4_DISTANCE_MAX, PAGE_SIZE) + 1) struct z_erofs_lz4_decompress_ctx { struct z_erofs_decompress_req *rq; @@ -60,8 +61,7 @@ static int z_erofs_lz4_prepare_dstpages(struct z_erofs_lz4_decompress_ctx *ctx, { struct z_erofs_decompress_req *rq = ctx->rq; struct page *availables[LZ4_MAX_DISTANCE_PAGES] = { NULL }; - unsigned long bounced[DIV_ROUND_UP(LZ4_MAX_DISTANCE_PAGES, - BITS_PER_LONG)] = { 0 }; + unsigned long bounced[BITS_TO_LONGS(LZ4_MAX_DISTANCE_PAGES)] = { 0 }; unsigned int lz4_max_distance_pages = EROFS_SB(rq->sb)->lz4.max_distance_pages; void *kaddr = NULL; diff --git a/fs/exfat/exfat_fs.h b/fs/exfat/exfat_fs.h index 78be6964a8a0..f7a882cfb259 100644 --- a/fs/exfat/exfat_fs.h +++ b/fs/exfat/exfat_fs.h @@ -47,7 +47,7 @@ enum { #define ES_IDX_STREAM 1 #define ES_IDX_FIRST_FILENAME 2 #define EXFAT_FILENAME_ENTRY_NUM(name_len) \ - DIV_ROUND_UP(name_len, EXFAT_FILE_NAME_LEN) + __KERNEL_DIV_ROUND_UP(name_len, EXFAT_FILE_NAME_LEN) #define ES_IDX_LAST_FILENAME(name_len) \ (ES_IDX_FIRST_FILENAME + EXFAT_FILENAME_ENTRY_NUM(name_len) - 1) @@ -147,7 +147,8 @@ enum { * The 608 bytes are in 3 sectors at most (even 512 Byte sector). */ #define DIR_CACHE_SIZE \ - (DIV_ROUND_UP(EXFAT_DEN_TO_B(ES_MAX_ENTRY_NUM), SECTOR_SIZE) + 1) + (__KERNEL_DIV_ROUND_UP(EXFAT_DEN_TO_B(ES_MAX_ENTRY_NUM), SECTOR_SIZE) \ + + 1) /* Superblock flags */ #define EXFAT_FLAGS_SHUTDOWN 1 diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c index 1924c4a2077b..25e2f52e4485 100644 --- a/fs/nfs/nfs42proc.c +++ b/fs/nfs/nfs42proc.c @@ -1161,7 +1161,7 @@ int nfs42_proc_clone(struct file *src_f, struct file *dst_f, return err; } -#define NFS4XATTR_MAXPAGES DIV_ROUND_UP(XATTR_SIZE_MAX, PAGE_SIZE) +#define NFS4XATTR_MAXPAGES __KERNEL_DIV_ROUND_UP(XATTR_SIZE_MAX, PAGE_SIZE) static int _nfs42_proc_removexattr(struct inode *inode, const char *name) { diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index df9669d4ded7..d2c7122ecd68 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -5954,7 +5954,7 @@ static bool nfs4_server_supports_acls(const struct nfs_server *server, * it's OK to put sizeof(void) * (XATTR_SIZE_MAX/PAGE_SIZE) bytes on * the stack. */ -#define NFS4ACL_MAXPAGES DIV_ROUND_UP(XATTR_SIZE_MAX, PAGE_SIZE) +#define NFS4ACL_MAXPAGES __KERNEL_DIV_ROUND_UP(XATTR_SIZE_MAX, PAGE_SIZE) int nfs4_buf_to_pages_noslab(const void *buf, size_t buflen, struct page **pages) diff --git a/fs/nfs/nfs4session.h b/fs/nfs/nfs4session.h index 351616c61df5..5af450df4a3f 100644 --- a/fs/nfs/nfs4session.h +++ b/fs/nfs/nfs4session.h @@ -35,7 +35,7 @@ enum nfs4_slot_tbl_state { NFS4_SLOT_TBL_DRAINING, }; -#define SLOT_TABLE_SZ DIV_ROUND_UP(NFS4_MAX_SLOT_TABLE, BITS_PER_LONG) +#define SLOT_TABLE_SZ BITS_TO_LONGS(NFS4_MAX_SLOT_TABLE) struct nfs4_slot_table { struct nfs4_session *session; /* Parent session */ struct nfs4_slot *slots; /* seqid per slot */ diff --git a/fs/orangefs/orangefs-bufmap.c b/fs/orangefs/orangefs-bufmap.c index edcca4beb765..1bad9687ebcb 100644 --- a/fs/orangefs/orangefs-bufmap.c +++ b/fs/orangefs/orangefs-bufmap.c @@ -158,7 +158,7 @@ static struct orangefs_bufmap { unsigned long *buffer_index_array; /* array to track usage of buffer descriptors for readdir */ -#define N DIV_ROUND_UP(ORANGEFS_READDIR_DEFAULT_DESC_COUNT, BITS_PER_LONG) +#define N BITS_TO_LONGS(ORANGEFS_READDIR_DEFAULT_DESC_COUNT) unsigned long readdir_index_array[N]; #undef N } *__orangefs_bufmap; diff --git a/include/crypto/internal/ecc.h b/include/crypto/internal/ecc.h index 57cd75242141..24711384ddd1 100644 --- a/include/crypto/internal/ecc.h +++ b/include/crypto/internal/ecc.h @@ -34,7 +34,7 @@ #define ECC_CURVE_NIST_P256_DIGITS 4 #define ECC_CURVE_NIST_P384_DIGITS 6 #define ECC_CURVE_NIST_P521_DIGITS 9 -#define ECC_MAX_DIGITS DIV_ROUND_UP(521, 64) /* NIST P521 */ +#define ECC_MAX_DIGITS __KERNEL_DIV_ROUND_UP(521, 64) /* NIST P521 */ #define ECC_DIGITS_TO_BYTES_SHIFT 3 diff --git a/include/linux/can/length.h b/include/linux/can/length.h index abc978b38f79..20f90c8e6eaf 100644 --- a/include/linux/can/length.h +++ b/include/linux/can/length.h @@ -238,9 +238,8 @@ * (rounded up, including intermission) */ #define can_frame_bytes(is_fd, is_eff, bitstuffing, data_len) \ - DIV_ROUND_UP(can_frame_bits(is_fd, is_eff, bitstuffing, \ - true, data_len), \ - BITS_PER_BYTE) + BITS_TO_BYTES(can_frame_bits(is_fd, is_eff, bitstuffing,\ + true, data_len)) /* * Maximum size of a Classical CAN frame diff --git a/include/linux/gpio/gpio-nomadik.h b/include/linux/gpio/gpio-nomadik.h index b5a84864650d..067ce7a068c3 100644 --- a/include/linux/gpio/gpio-nomadik.h +++ b/include/linux/gpio/gpio-nomadik.h @@ -10,7 +10,7 @@ struct fwnode_handle; #define GPIO_BLOCK_SHIFT 5 #define NMK_GPIO_PER_CHIP BIT(GPIO_BLOCK_SHIFT) -#define NMK_MAX_BANKS DIV_ROUND_UP(512, NMK_GPIO_PER_CHIP) +#define NMK_MAX_BANKS __KERNEL_DIV_ROUND_UP(512, NMK_GPIO_PER_CHIP) /* Register in the logic block */ #define NMK_GPIO_DAT 0x00 diff --git a/include/linux/math.h b/include/linux/math.h index 0198c92cbe3e..6f541d765d8a 100644 --- a/include/linux/math.h +++ b/include/linux/math.h @@ -2,6 +2,7 @@ #ifndef _LINUX_MATH_H #define _LINUX_MATH_H +#include <linux/log2.h> #include <linux/types.h> #include <asm/div64.h> #include <uapi/linux/kernel.h> @@ -46,7 +47,10 @@ #define DIV_ROUND_UP_POW2(n, d) \ ((n) / (d) + !!((n) & ((d) - 1))) -#define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP +#define DIV_ROUND_UP(n, d) \ + (__builtin_constant_p(d) && is_power_of_2(d) \ + ? DIV_ROUND_UP_POW2(n, d) \ + : __KERNEL_DIV_ROUND_UP(n, d)) #define DIV_ROUND_DOWN_ULL(ll, d) \ ({ unsigned long long _tmp = (ll); do_div(_tmp, d); _tmp; }) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 9540b41894da..652edb86f379 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -1880,7 +1880,8 @@ struct mem_section { #endif #define SECTION_NR_TO_ROOT(sec) ((sec) / SECTIONS_PER_ROOT) -#define NR_SECTION_ROOTS DIV_ROUND_UP(NR_MEM_SECTIONS, SECTIONS_PER_ROOT) +#define NR_SECTION_ROOTS __KERNEL_DIV_ROUND_UP(NR_MEM_SECTIONS, \ + SECTIONS_PER_ROOT) #define SECTION_ROOT_MASK (SECTIONS_PER_ROOT - 1) #ifdef CONFIG_SPARSEMEM_EXTREME diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h index 71fbebfa43c7..8141f70e29b1 100644 --- a/include/linux/nfs4.h +++ b/include/linux/nfs4.h @@ -820,8 +820,7 @@ enum pnfs_update_layout_reason { PNFS_UPDATE_LAYOUT_EXIT, }; -#define NFS4_OP_MAP_NUM_LONGS \ - DIV_ROUND_UP(LAST_NFS4_OP, 8 * sizeof(unsigned long)) +#define NFS4_OP_MAP_NUM_LONGS BITS_TO_LONGS(LAST_NFS4_OP) #define NFS4_OP_MAP_NUM_WORDS \ (NFS4_OP_MAP_NUM_LONGS * sizeof(unsigned long) / sizeof(u32)) struct nfs4_op_map { diff --git a/include/linux/rcu_node_tree.h b/include/linux/rcu_node_tree.h index 78feb8ba7358..3fb40bbb0455 100644 --- a/include/linux/rcu_node_tree.h +++ b/include/linux/rcu_node_tree.h @@ -61,7 +61,7 @@ #elif NR_CPUS <= RCU_FANOUT_2 # define RCU_NUM_LVLS 2 # define NUM_RCU_LVL_0 1 -# define NUM_RCU_LVL_1 DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_1) +# define NUM_RCU_LVL_1 __KERNEL_DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_1) # define NUM_RCU_NODES (NUM_RCU_LVL_0 + NUM_RCU_LVL_1) # define NUM_RCU_LVL_INIT { NUM_RCU_LVL_0, NUM_RCU_LVL_1 } # define RCU_NODE_NAME_INIT { "rcu_node_0", "rcu_node_1" } @@ -69,8 +69,8 @@ #elif NR_CPUS <= RCU_FANOUT_3 # define RCU_NUM_LVLS 3 # define NUM_RCU_LVL_0 1 -# define NUM_RCU_LVL_1 DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_2) -# define NUM_RCU_LVL_2 DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_1) +# define NUM_RCU_LVL_1 __KERNEL_DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_2) +# define NUM_RCU_LVL_2 __KERNEL_DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_1) # define NUM_RCU_NODES (NUM_RCU_LVL_0 + NUM_RCU_LVL_1 + NUM_RCU_LVL_2) # define NUM_RCU_LVL_INIT { NUM_RCU_LVL_0, NUM_RCU_LVL_1, NUM_RCU_LVL_2 } # define RCU_NODE_NAME_INIT { "rcu_node_0", "rcu_node_1", "rcu_node_2" } @@ -78,9 +78,9 @@ #elif NR_CPUS <= RCU_FANOUT_4 # define RCU_NUM_LVLS 4 # define NUM_RCU_LVL_0 1 -# define NUM_RCU_LVL_1 DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_3) -# define NUM_RCU_LVL_2 DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_2) -# define NUM_RCU_LVL_3 DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_1) +# define NUM_RCU_LVL_1 __KERNEL_DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_3) +# define NUM_RCU_LVL_2 __KERNEL_DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_2) +# define NUM_RCU_LVL_3 __KERNEL_DIV_ROUND_UP(NR_CPUS, RCU_FANOUT_1) # define NUM_RCU_NODES (NUM_RCU_LVL_0 + NUM_RCU_LVL_1 + NUM_RCU_LVL_2 + NUM_RCU_LVL_3) # define NUM_RCU_LVL_INIT { NUM_RCU_LVL_0, NUM_RCU_LVL_1, NUM_RCU_LVL_2, NUM_RCU_LVL_3 } # define RCU_NODE_NAME_INIT { "rcu_node_0", "rcu_node_1", "rcu_node_2", "rcu_node_3" } diff --git a/include/linux/tcp.h b/include/linux/tcp.h index f88daaa76d83..59989f26ed6b 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -88,7 +88,7 @@ static inline unsigned int tcp_optlen(const struct sk_buff *skb) /* TCP Fast Open Cookie as stored in memory */ struct tcp_fastopen_cookie { - __le64 val[DIV_ROUND_UP(TCP_FASTOPEN_COOKIE_MAX, sizeof(u64))]; + __le64 val[__KERNEL_DIV_ROUND_UP(TCP_FASTOPEN_COOKIE_MAX, sizeof(u64))]; s8 len; bool exp; /* In RFC6994 experimental option format */ }; diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 363d7dd2255a..e9f6d37ca2d5 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -5723,7 +5723,7 @@ struct wiphy { u16 max_acl_mac_addrs; u32 flags, regulatory_flags, features; - u8 ext_features[DIV_ROUND_UP(NUM_NL80211_EXT_FEATURES, 8)]; + u8 ext_features[__KERNEL_DIV_ROUND_UP(NUM_NL80211_EXT_FEATURES, 8)]; u32 ap_sme_capa; diff --git a/kernel/events/core.c b/kernel/events/core.c index bcb09e011e9e..a75280e57903 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -464,7 +464,7 @@ int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' int sysctl_perf_event_sample_rate __read_mostly = DEFAULT_MAX_SAMPLE_RATE; -static int max_samples_per_tick __read_mostly = DIV_ROUND_UP(DEFAULT_MAX_SAMPLE_RATE, HZ); +static int max_samples_per_tick __read_mostly = __KERNEL_DIV_ROUND_UP(DEFAULT_MAX_SAMPLE_RATE, HZ); static int perf_sample_period_ns __read_mostly = DEFAULT_SAMPLE_PERIOD_NS; static int perf_sample_allowed_ns __read_mostly = diff --git a/kernel/power/swap.c b/kernel/power/swap.c index 82b884b67152..d5cc164088e5 100644 --- a/kernel/power/swap.c +++ b/kernel/power/swap.c @@ -529,8 +529,8 @@ static int swap_writer_finish(struct swap_map_handle *handle, #define UNC_SIZE (UNC_PAGES * PAGE_SIZE) /* Number of pages we need for compressed data (worst case). */ -#define CMP_PAGES DIV_ROUND_UP(bytes_worst_compress(UNC_SIZE) + \ - CMP_HEADER, PAGE_SIZE) +#define CMP_PAGES __KERNEL_DIV_ROUND_UP(bytes_worst_compress(UNC_SIZE) + \ + CMP_HEADER, PAGE_SIZE) #define CMP_SIZE (CMP_PAGES * PAGE_SIZE) /* Maximum number of threads for compression/decompression. */ diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h index 59314da5eb60..b99a0c64c543 100644 --- a/kernel/rcu/tasks.h +++ b/kernel/rcu/tasks.h @@ -144,7 +144,7 @@ static struct rcu_tasks rt_name = \ .call_func = call, \ .wait_state = TASK_UNINTERRUPTIBLE, \ .rtpcpu = &rt_name ## __percpu, \ - .lazy_jiffies = DIV_ROUND_UP(HZ, 4), \ + .lazy_jiffies = __KERNEL_DIV_ROUND_UP(HZ, 4), \ .name = n, \ .percpu_enqueue_shift = order_base_2(CONFIG_NR_CPUS), \ .percpu_enqueue_lim = 1, \ diff --git a/lib/bch.c b/lib/bch.c index 1c0cb07cdfeb..4777d5fe0185 100644 --- a/lib/bch.c +++ b/lib/bch.c @@ -92,7 +92,7 @@ #define BCH_ECC_WORDS(_p) DIV_ROUND_UP(GF_M(_p)*GF_T(_p), 32) #define BCH_ECC_BYTES(_p) DIV_ROUND_UP(GF_M(_p)*GF_T(_p), 8) -#define BCH_ECC_MAX_WORDS DIV_ROUND_UP(BCH_MAX_M * BCH_MAX_T, 32) +#define BCH_ECC_MAX_WORDS __KERNEL_DIV_ROUND_UP(BCH_MAX_M * BCH_MAX_T, 32) #ifndef dbg #define dbg(_fmt, args...) do {} while (0) diff --git a/lib/test_bitmap.c b/lib/test_bitmap.c index 65a75d58ed9e..df34bb85fd88 100644 --- a/lib/test_bitmap.c +++ b/lib/test_bitmap.c @@ -693,8 +693,8 @@ static void __init test_bitmap_arr32(void) } if (nbits < EXP1_IN_BITS - 32) - expect_eq_uint(arr[DIV_ROUND_UP(nbits, 32)], - 0xa5a5a5a5); + expect_eq_uint(arr[__KERNEL_DIV_ROUND_UP(nbits, 32)], + 0xa5a5a5a5); } } @@ -728,7 +728,8 @@ static void __init test_bitmap_arr64(void) } if (nbits < EXP1_IN_BITS - 64) - expect_eq_uint(arr[DIV_ROUND_UP(nbits, 64)], 0xa5a5a5a5); + expect_eq_uint(arr[__KERNEL_DIV_ROUND_UP(nbits, 64)], + 0xa5a5a5a5); } } diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 6d0e47f7ae33..5b4ec6900999 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -128,8 +128,9 @@ * (reason above) */ #define ZS_SIZE_CLASS_DELTA (PAGE_SIZE >> CLASS_BITS) -#define ZS_SIZE_CLASSES (DIV_ROUND_UP(ZS_MAX_ALLOC_SIZE - ZS_MIN_ALLOC_SIZE, \ - ZS_SIZE_CLASS_DELTA) + 1) +#define ZS_SIZE_CLASSES (__KERNEL_DIV_ROUND_UP(ZS_MAX_ALLOC_SIZE - \ + ZS_MIN_ALLOC_SIZE, \ + ZS_SIZE_CLASS_DELTA) + 1) /* * Pages are distinguished by the ratio of used memory (that is the ratio diff --git a/net/ethtool/bitset.c b/net/ethtool/bitset.c index f0883357d12e..abce56a56801 100644 --- a/net/ethtool/bitset.c +++ b/net/ethtool/bitset.c @@ -734,7 +734,7 @@ int ethnl_parse_bitset(unsigned long *val, unsigned long *mask, * majority of bitmaps used by ethtool. */ #define ETHNL_SMALL_BITMAP_BITS 128 -#define ETHNL_SMALL_BITMAP_WORDS DIV_ROUND_UP(ETHNL_SMALL_BITMAP_BITS, 32) +#define ETHNL_SMALL_BITMAP_WORDS BITS_TO_U32(ETHNL_SMALL_BITMAP_BITS) int ethnl_bitset_size(const unsigned long *val, const unsigned long *mask, unsigned int nbits, ethnl_string_array_t names, diff --git a/net/ethtool/common.h b/net/ethtool/common.h index 850eadde4bfc..9635589e9d1c 100644 --- a/net/ethtool/common.h +++ b/net/ethtool/common.h @@ -6,7 +6,7 @@ #include <linux/netdevice.h> #include <linux/ethtool.h> -#define ETHTOOL_DEV_FEATURE_WORDS DIV_ROUND_UP(NETDEV_FEATURE_COUNT, 32) +#define ETHTOOL_DEV_FEATURE_WORDS BITS_TO_U32(NETDEV_FEATURE_COUNT) /* compose link mode index from speed, type and duplex */ #define ETHTOOL_LINK_MODE(speed, type, duplex) \ diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 34bee42e1247..0406b5706133 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -421,7 +421,7 @@ convert_link_ksettings_to_legacy_settings( /* number of 32-bit words to store the user's link mode bitmaps */ #define __ETHTOOL_LINK_MODE_MASK_NU32 \ - DIV_ROUND_UP(__ETHTOOL_LINK_MODE_MASK_NBITS, 32) + BITS_TO_U32(__ETHTOOL_LINK_MODE_MASK_NBITS) /* layout of the struct passed from/to userland */ struct ethtool_link_usettings { diff --git a/net/mac80211/airtime.c b/net/mac80211/airtime.c index c61df637232a..e17d5d63b055 100644 --- a/net/mac80211/airtime.c +++ b/net/mac80211/airtime.c @@ -16,7 +16,7 @@ /* Number of kilo-symbols (symbols * 1024) for a packet with (bps) bits per * symbol. We use k-symbols to avoid rounding in the _TIME macros below. */ -#define MCS_N_KSYMS(bps) DIV_ROUND_UP(MCS_NBITS << 10, (bps)) +#define MCS_N_KSYMS(bps) __KERNEL_DIV_ROUND_UP(MCS_NBITS << 10, (bps)) /* Transmission time (in 1024 * usec) for a packet containing (ksyms) * 1024 * symbols. diff --git a/net/mac80211/rc80211_minstrel_ht.c b/net/mac80211/rc80211_minstrel_ht.c index 706cbc99f718..271ec1c6ad4f 100644 --- a/net/mac80211/rc80211_minstrel_ht.c +++ b/net/mac80211/rc80211_minstrel_ht.c @@ -23,7 +23,7 @@ #define MCS_NBITS ((AVG_PKT_SIZE * AVG_AMPDU_SIZE) << 3) /* Number of symbols for a packet with (bps) bits per symbol */ -#define MCS_NSYMS(bps) DIV_ROUND_UP(MCS_NBITS, (bps)) +#define MCS_NSYMS(bps) __KERNEL_DIV_ROUND_UP(MCS_NBITS, (bps)) /* Transmission time (nanoseconds) for a packet containing (syms) symbols */ #define MCS_SYMBOL_TIME(sgi, syms) \ diff --git a/security/selinux/ss/sidtab.h b/security/selinux/ss/sidtab.h index 832c85c70d83..53082a3c1453 100644 --- a/security/selinux/ss/sidtab.h +++ b/security/selinux/ss/sidtab.h @@ -50,8 +50,9 @@ union sidtab_entry_inner { #define SIDTAB_MAX U32_MAX /* ensure enough tree levels for SIDTAB_MAX entries */ #define SIDTAB_MAX_LEVEL \ - DIV_ROUND_UP(SIDTAB_MAX_BITS - size_to_shift(SIDTAB_LEAF_ENTRIES), \ - SIDTAB_INNER_SHIFT) + __KERNEL_DIV_ROUND_UP(SIDTAB_MAX_BITS - \ + size_to_shift(SIDTAB_LEAF_ENTRIES), \ + SIDTAB_INNER_SHIFT) struct sidtab_node_leaf { struct sidtab_entry entries[SIDTAB_LEAF_ENTRIES]; diff --git a/sound/usb/misc/ua101.c b/sound/usb/misc/ua101.c index 4f6b20ed29dd..ba3743cff639 100644 --- a/sound/usb/misc/ua101.c +++ b/sound/usb/misc/ua101.c @@ -36,7 +36,7 @@ MODULE_LICENSE("GPL v2"); #define DEFAULT_QUEUE_LENGTH 21 #define MAX_PACKET_SIZE 672 /* hardware specific */ -#define MAX_MEMORY_BUFFERS DIV_ROUND_UP(MAX_QUEUE_LENGTH, \ +#define MAX_MEMORY_BUFFERS __KERNEL_DIV_ROUND_UP(MAX_QUEUE_LENGTH, \ PAGE_SIZE / MAX_PACKET_SIZE) static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; -- 2.43.0