sg = sgl->sg;
 
        if (!sg || sgl->cur >= MAX_SGL_ENTS) {
-               sgl = sock_kmalloc(sk, sizeof(*sgl) +
-                                      sizeof(sgl->sg[0]) * (MAX_SGL_ENTS + 1),
+               sgl = sock_kmalloc(sk,
+                                  struct_size(sgl, sg, (MAX_SGL_ENTS + 1)),
                                   GFP_KERNEL);
                if (!sgl)
                        return -ENOMEM;
 
        if (IS_ERR(reg))
                return PTR_ERR(reg);
 
-       onecell = devm_kmalloc(dev, sizeof(*onecell) + sizeof(*onecell->hws) *
-                              BCM2835_AUX_CLOCK_COUNT, GFP_KERNEL);
+       onecell = devm_kmalloc(dev,
+                              struct_size(onecell, hws,
+                                          BCM2835_AUX_CLOCK_COUNT),
+                              GFP_KERNEL);
        if (!onecell)
                return -ENOMEM;
        onecell->num = BCM2835_AUX_CLOCK_COUNT;
 
        size_t i;
        int ret;
 
-       cprman = devm_kzalloc(dev, sizeof(*cprman) +
-                             sizeof(*cprman->onecell.hws) * asize,
+       cprman = devm_kzalloc(dev,
+                             struct_size(cprman, onecell.hws, asize),
                              GFP_KERNEL);
        if (!cprman)
                return -ENOMEM;
 
        if (!s2mps11_clks)
                return -ENOMEM;
 
-       clk_data = devm_kzalloc(&pdev->dev, sizeof(*clk_data) +
-                               sizeof(*clk_data->hws) * S2MPS11_CLKS_NUM,
+       clk_data = devm_kzalloc(&pdev->dev,
+                               struct_size(clk_data, hws, S2MPS11_CLKS_NUM),
                                GFP_KERNEL);
        if (!clk_data)
                return -ENOMEM;
 
                return -EINVAL;
        }
 
-       clk_data = devm_kzalloc(dev, sizeof(*clk_data) +
-                               sizeof(*clk_data->hws) * count, GFP_KERNEL);
+       clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, count),
+                               GFP_KERNEL);
        if (!clk_data)
                return -ENOMEM;
 
 
        struct da8xx_usb0_clk48 *usb0;
        struct da8xx_usb1_clk48 *usb1;
 
-       clk_data = devm_kzalloc(dev, sizeof(*clk_data) + 2 *
-                               sizeof(*clk_data->hws), GFP_KERNEL);
+       clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, 2),
+                               GFP_KERNEL);
        if (!clk_data)
                return -ENOMEM;
 
 
        if (!driver_data)
                return -ENOMEM;
 
-       driver_data->hw_data = devm_kzalloc(dev, sizeof(*driver_data->hw_data) +
-                           sizeof(*driver_data->hw_data->hws) * num_periph,
-                           GFP_KERNEL);
+       driver_data->hw_data = devm_kzalloc(dev,
+                                           struct_size(driver_data->hw_data,
+                                                       hws, num_periph),
+                                           GFP_KERNEL);
        if (!driver_data->hw_data)
                return -ENOMEM;
        driver_data->hw_data->num = num_periph;
 
        void __iomem *reg;
        int i, ret;
 
-       hw_tbg_data = devm_kzalloc(&pdev->dev, sizeof(*hw_tbg_data)
-                                  + sizeof(*hw_tbg_data->hws) * NUM_TBG,
+       hw_tbg_data = devm_kzalloc(&pdev->dev,
+                                  struct_size(hw_tbg_data, hws, NUM_TBG),
                                   GFP_KERNEL);
        if (!hw_tbg_data)
                return -ENOMEM;
 
        if (!nclks)
                return -EINVAL;
 
-       cc = devm_kzalloc(dev, sizeof(*cc) + sizeof(*cc->clks) * nclks,
-                         GFP_KERNEL);
+       cc = devm_kzalloc(dev, struct_size(cc, clks, nclks), GFP_KERNEL);
        if (!cc)
                return -ENOMEM;
        cc->nclks = nclks;
 
        epll = ERR_PTR(-ENODEV);
 
        clk_data = devm_kzalloc(dev,
-                               sizeof(*clk_data) +
-                               sizeof(*clk_data->hws) * EXYNOS_AUDSS_MAX_CLKS,
+                               struct_size(clk_data, hws,
+                                           EXYNOS_AUDSS_MAX_CLKS),
                                GFP_KERNEL);
        if (!clk_data)
                return -ENOMEM;
 
 
        info = of_device_get_match_data(dev);
 
-       data = devm_kzalloc(dev, sizeof(*data) +
-                           sizeof(*data->ctx.clk_data.hws) * info->nr_clk_ids,
+       data = devm_kzalloc(dev,
+                           struct_size(data, ctx.clk_data.hws, info->nr_clk_ids),
                            GFP_KERNEL);
        if (!data)
                return -ENOMEM;
 
        struct clk_hw **clk_table;
        int ret, i;
 
-       s3c24xx_dclk = devm_kzalloc(&pdev->dev, sizeof(*s3c24xx_dclk) +
-                           sizeof(*s3c24xx_dclk->clk_data.hws) * DCLK_MAX_CLKS,
-                           GFP_KERNEL);
+       s3c24xx_dclk = devm_kzalloc(&pdev->dev,
+                                   struct_size(s3c24xx_dclk, clk_data.hws,
+                                               DCLK_MAX_CLKS),
+                                   GFP_KERNEL);
        if (!s3c24xx_dclk)
                return -ENOMEM;
 
 
        }
 
        clk_data = devm_kzalloc(&pdev->dev,
-                               sizeof(*clk_data) +
-                               sizeof(*clk_data->hws) * AUDSS_MAX_CLKS,
+                               struct_size(clk_data, hws, AUDSS_MAX_CLKS),
                                GFP_KERNEL);
 
        if (!clk_data)
 
 
        for (i = 0; i < sba->max_req; i++) {
                req = devm_kzalloc(sba->dev,
-                               sizeof(*req) +
-                               sba->max_cmd_per_req * sizeof(req->cmds[0]),
-                               GFP_KERNEL);
+                                  struct_size(req, cmds, sba->max_cmd_per_req),
+                                  GFP_KERNEL);
                if (!req) {
                        ret = -ENOMEM;
                        goto fail_free_cmds_pool;
 
        cfg = of_device_get_match_data(dev);
        num_channels = cfg->num_channels;
 
-       nbpf = devm_kzalloc(dev, sizeof(*nbpf) + num_channels *
-                           sizeof(nbpf->chan[0]), GFP_KERNEL);
+       nbpf = devm_kzalloc(dev, struct_size(nbpf, chan, num_channels),
+                           GFP_KERNEL);
        if (!nbpf)
                return -ENOMEM;
 
 
                return ret;
        }
 
-       sdev = devm_kzalloc(&pdev->dev, sizeof(*sdev) +
-                           sizeof(*dma_chn) * chn_count,
+       sdev = devm_kzalloc(&pdev->dev,
+                           struct_size(sdev, channels, chn_count),
                            GFP_KERNEL);
        if (!sdev)
                return -ENOMEM;
 
                return ret;
 
        nregs = uniphier_gpio_get_nbanks(ngpios) * 2 + 3;
-       priv = devm_kzalloc(dev,
-                           sizeof(*priv) + sizeof(priv->saved_vals[0]) * nregs,
+       priv = devm_kzalloc(dev, struct_size(priv, saved_vals, nregs),
                            GFP_KERNEL);
        if (!priv)
                return -ENOMEM;
 
        if (!pdev->dev.of_node)
                return -ENODEV;
 
-       hwspin = devm_kzalloc(&pdev->dev, sizeof(*hwspin) +
-                       sizeof(*hwlock) * HW_SPINLOCK_NUMBER, GFP_KERNEL);
+       hwspin = devm_kzalloc(&pdev->dev,
+                             struct_size(hwspin, bank.lock,
+                                         HW_SPINLOCK_NUMBER),
+                             GFP_KERNEL);
        if (!hwspin)
                return -ENOMEM;
 
 
        }
 
        priv = devm_kzalloc(dev,
-                           sizeof(*priv) +
-                               cap->num_channels * sizeof(priv->keycodes[0]),
+                           struct_size(priv, keycodes, cap->num_channels),
                            GFP_KERNEL);
        if (!priv)
                return -ENOMEM;
 
        pr_info("PMIC revision 2: %02X\n", val);
        rev |= val << BITS_PER_BYTE;
 
-       chip = devm_kzalloc(&pdev->dev, sizeof(*chip) +
-                           sizeof(chip->config[0]) * data->num_irqs,
+       chip = devm_kzalloc(&pdev->dev,
+                           struct_size(chip, config, data->num_irqs),
                            GFP_KERNEL);
        if (!chip)
                return -ENOMEM;
 
        if (val & CB710_SLOT_SM)
                ++n;
 
-       chip = devm_kzalloc(&pdev->dev,
-               sizeof(*chip) + n * sizeof(*chip->slot), GFP_KERNEL);
+       chip = devm_kzalloc(&pdev->dev, struct_size(chip, slot, n),
+                           GFP_KERNEL);
        if (!chip)
                return -ENOMEM;
 
 
                return -ENODEV;
        info = match->data;
 
-       controller = devm_kzalloc(&pdev->dev, sizeof(*controller) +
-               info->nce * sizeof(controller->chips[0]), GFP_KERNEL);
+       controller = devm_kzalloc(&pdev->dev,
+                                 struct_size(controller, chips, info->nce),
+                                 GFP_KERNEL);
        if (!controller)
                return -ENOMEM;
        controller->info = info;
 
                can_count = 1;
 
        /* allocate board structure object */
-       pciefd = devm_kzalloc(&pdev->dev, sizeof(*pciefd) +
-                             can_count * sizeof(*pciefd->can),
+       pciefd = devm_kzalloc(&pdev->dev, struct_size(pciefd, can, can_count),
                              GFP_KERNEL);
        if (!pciefd) {
                err = -ENOMEM;
 
                ++nr_domains;
        }
 
-       data = devm_kzalloc(dev, sizeof(*data)
-                       + nr_domains * sizeof(*data->domains), GFP_KERNEL);
+       data = devm_kzalloc(dev, struct_size(data, domains, nr_domains),
+                           GFP_KERNEL);
        if (!data)
                return -ENOMEM;
        data->drvdata = d;
 
 
        nregs = DIV_ROUND_UP(count * width, 32);
 
-       region = devm_kzalloc(dev,
-                             sizeof(*region) + sizeof(region->vals[0]) * nregs,
+       region = devm_kzalloc(dev, struct_size(region, vals, nregs),
                              GFP_KERNEL);
        if (!region)
                return -ENOMEM;
 
        if (num_regulators <= 0)
                return -EINVAL;
 
-       priv = devm_kzalloc(&pdev->dev, sizeof(*priv) +
-                       num_regulators * sizeof(priv->regulators[0]),
-                       GFP_KERNEL);
+       priv = devm_kzalloc(&pdev->dev,
+                           struct_size(priv, regulators, num_regulators),
+                           GFP_KERNEL);
        if (!priv)
                return -ENOMEM;
 
 
        if (num_regulators <= 0)
                return -EINVAL;
 
-       priv = devm_kzalloc(&pdev->dev, sizeof(*priv) +
-               num_regulators * sizeof(priv->regulators[0]),
-               GFP_KERNEL);
+       priv = devm_kzalloc(&pdev->dev,
+                           struct_size(priv, regulators, num_regulators),
+                           GFP_KERNEL);
        if (!priv)
                return -ENOMEM;
 
 
        const char *parents[2] = {AC100_RTC_32K_NAME};
        int i, ret;
 
-       chip->clk_data = devm_kzalloc(chip->dev, sizeof(*chip->clk_data) +
-                                                sizeof(*chip->clk_data->hws) *
-                                                AC100_CLKOUT_NUM,
-                                                GFP_KERNEL);
+       chip->clk_data = devm_kzalloc(chip->dev,
+                                     struct_size(chip->clk_data, hws,
+                                                 AC100_CLKOUT_NUM),
+                                     GFP_KERNEL);
        if (!chip->clk_data)
                return -ENOMEM;
 
 
 
        sps_info = match->data;
 
-       sps = devm_kzalloc(&pdev->dev, sizeof(*sps) +
-                          sps_info->num_domains * sizeof(sps->domains[0]),
+       sps = devm_kzalloc(&pdev->dev,
+                          struct_size(sps, domains, sps_info->num_domains),
                           GFP_KERNEL);
        if (!sps)
                return -ENOMEM;
 
        pmu_info = match->data;
 
        pmu = devm_kzalloc(dev,
-                          sizeof(*pmu) +
-                               pmu_info->num_domains * sizeof(pmu->domains[0]),
+                          struct_size(pmu, domains, pmu_info->num_domains),
                           GFP_KERNEL);
        if (!pmu)
                return -ENOMEM;
 
        int ret, i;
        struct device *dev;
        struct device_node *np;
-       struct tsens_sensor *s;
        struct tsens_device *tmdev;
        const struct tsens_data *data;
        const struct of_device_id *id;
                return -EINVAL;
        }
 
-       tmdev = devm_kzalloc(dev, sizeof(*tmdev) +
-                            data->num_sensors * sizeof(*s), GFP_KERNEL);
+       tmdev = devm_kzalloc(dev,
+                            struct_size(tmdev, sensor, data->num_sensors),
+                            GFP_KERNEL);
        if (!tmdev)
                return -ENOMEM;
 
 
        num_links = of_get_child_count(node);
 
        /* Allocate the private data and the DAI link array */
-       data = devm_kzalloc(dev, sizeof(*data) + sizeof(*link) * num_links,
+       data = devm_kzalloc(dev,
+                           struct_size(data, dai_link, num_links),
                            GFP_KERNEL);
        if (!data)
                return ERR_PTR(-ENOMEM);