mirror of https://github.com/torvalds/linux.git
The devm_kzalloc() function has a 2-factor argument form, devm_kcalloc().
This patch replaces cases of:
devm_kzalloc(handle, a * b, gfp)
with:
devm_kcalloc(handle, a * b, gfp)
as well as handling cases of:
devm_kzalloc(handle, a * b * c, gfp)
with:
devm_kzalloc(handle, array3_size(a, b, c), gfp)
as it's slightly less ugly than:
devm_kcalloc(handle, array_size(a, b), c, gfp)
This does, however, attempt to ignore constant size factors like:
devm_kzalloc(handle, 4 * 1024, gfp)
though any constants defined via macros get caught up in the conversion.
Any factors with a sizeof() of "unsigned char", "char", and "u8" were
dropped, since they're redundant.
Some manual whitespace fixes were needed in this patch, as Coccinelle
really liked to write "=devm_kcalloc..." instead of "= devm_kcalloc...".
The Coccinelle script used for this was:
// Fix redundant parens around sizeof().
@@
expression HANDLE;
type TYPE;
expression THING, E;
@@
(
devm_kzalloc(HANDLE,
- (sizeof(TYPE)) * E
+ sizeof(TYPE) * E
, ...)
|
devm_kzalloc(HANDLE,
- (sizeof(THING)) * E
+ sizeof(THING) * E
, ...)
)
// Drop single-byte sizes and redundant parens.
@@
expression HANDLE;
expression COUNT;
typedef u8;
typedef __u8;
@@
(
devm_kzalloc(HANDLE,
- sizeof(u8) * (COUNT)
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(__u8) * (COUNT)
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(char) * (COUNT)
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(unsigned char) * (COUNT)
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(u8) * COUNT
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(__u8) * COUNT
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(char) * COUNT
+ COUNT
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(unsigned char) * COUNT
+ COUNT
, ...)
)
// 2-factor product with sizeof(type/expression) and identifier or constant.
@@
expression HANDLE;
type TYPE;
expression THING;
identifier COUNT_ID;
constant COUNT_CONST;
@@
(
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * (COUNT_ID)
+ COUNT_ID, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * COUNT_ID
+ COUNT_ID, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * (COUNT_CONST)
+ COUNT_CONST, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * COUNT_CONST
+ COUNT_CONST, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * (COUNT_ID)
+ COUNT_ID, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * COUNT_ID
+ COUNT_ID, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * (COUNT_CONST)
+ COUNT_CONST, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * COUNT_CONST
+ COUNT_CONST, sizeof(THING)
, ...)
)
// 2-factor product, only identifiers.
@@
expression HANDLE;
identifier SIZE, COUNT;
@@
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- SIZE * COUNT
+ COUNT, SIZE
, ...)
// 3-factor product with 1 sizeof(type) or sizeof(expression), with
// redundant parens removed.
@@
expression HANDLE;
expression THING;
identifier STRIDE, COUNT;
type TYPE;
@@
(
devm_kzalloc(HANDLE,
- sizeof(TYPE) * (COUNT) * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE) * (COUNT) * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE) * COUNT * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE) * COUNT * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(TYPE))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING) * (COUNT) * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING) * (COUNT) * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING) * COUNT * (STRIDE)
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING) * COUNT * STRIDE
+ array3_size(COUNT, STRIDE, sizeof(THING))
, ...)
)
// 3-factor product with 2 sizeof(variable), with redundant parens removed.
@@
expression HANDLE;
expression THING1, THING2;
identifier COUNT;
type TYPE1, TYPE2;
@@
(
devm_kzalloc(HANDLE,
- sizeof(TYPE1) * sizeof(TYPE2) * COUNT
+ array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE1) * sizeof(THING2) * (COUNT)
+ array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING1) * sizeof(THING2) * COUNT
+ array3_size(COUNT, sizeof(THING1), sizeof(THING2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(THING1) * sizeof(THING2) * (COUNT)
+ array3_size(COUNT, sizeof(THING1), sizeof(THING2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE1) * sizeof(THING2) * COUNT
+ array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
, ...)
|
devm_kzalloc(HANDLE,
- sizeof(TYPE1) * sizeof(THING2) * (COUNT)
+ array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
, ...)
)
// 3-factor product, only identifiers, with redundant parens removed.
@@
expression HANDLE;
identifier STRIDE, SIZE, COUNT;
@@
(
devm_kzalloc(HANDLE,
- (COUNT) * STRIDE * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- COUNT * (STRIDE) * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- COUNT * STRIDE * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- (COUNT) * (STRIDE) * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- COUNT * (STRIDE) * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- (COUNT) * STRIDE * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- (COUNT) * (STRIDE) * (SIZE)
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
|
devm_kzalloc(HANDLE,
- COUNT * STRIDE * SIZE
+ array3_size(COUNT, STRIDE, SIZE)
, ...)
)
// Any remaining multi-factor products, first at least 3-factor products,
// when they're not all constants...
@@
expression HANDLE;
expression E1, E2, E3;
constant C1, C2, C3;
@@
(
devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
|
devm_kzalloc(HANDLE,
- (E1) * E2 * E3
+ array3_size(E1, E2, E3)
, ...)
|
devm_kzalloc(HANDLE,
- (E1) * (E2) * E3
+ array3_size(E1, E2, E3)
, ...)
|
devm_kzalloc(HANDLE,
- (E1) * (E2) * (E3)
+ array3_size(E1, E2, E3)
, ...)
|
devm_kzalloc(HANDLE,
- E1 * E2 * E3
+ array3_size(E1, E2, E3)
, ...)
)
// And then all remaining 2 factors products when they're not all constants,
// keeping sizeof() as the second factor argument.
@@
expression HANDLE;
expression THING, E1, E2;
type TYPE;
constant C1, C2, C3;
@@
(
devm_kzalloc(HANDLE, sizeof(THING) * C2, ...)
|
devm_kzalloc(HANDLE, sizeof(TYPE) * C2, ...)
|
devm_kzalloc(HANDLE, C1 * C2 * C3, ...)
|
devm_kzalloc(HANDLE, C1 * C2, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * (E2)
+ E2, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(TYPE) * E2
+ E2, sizeof(TYPE)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * (E2)
+ E2, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- sizeof(THING) * E2
+ E2, sizeof(THING)
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- (E1) * E2
+ E1, E2
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- (E1) * (E2)
+ E1, E2
, ...)
|
- devm_kzalloc
+ devm_kcalloc
(HANDLE,
- E1 * E2
+ E1, E2
, ...)
)
Signed-off-by: Kees Cook <keescook@chromium.org>
|
||
|---|---|---|
| .. | ||
| 88pm860x-codec.c | ||
| 88pm860x-codec.h | ||
| Kconfig | ||
| Makefile | ||
| ab8500-codec.c | ||
| ab8500-codec.h | ||
| ac97.c | ||
| ad193x-i2c.c | ||
| ad193x-spi.c | ||
| ad193x.c | ||
| ad193x.h | ||
| ad1836.c | ||
| ad1836.h | ||
| ad1980.c | ||
| ad73311.c | ||
| ad73311.h | ||
| adau-utils.c | ||
| adau-utils.h | ||
| adau17x1.c | ||
| adau17x1.h | ||
| adau1373.c | ||
| adau1373.h | ||
| adau1701.c | ||
| adau1701.h | ||
| adau1761-i2c.c | ||
| adau1761-spi.c | ||
| adau1761.c | ||
| adau1761.h | ||
| adau1781-i2c.c | ||
| adau1781-spi.c | ||
| adau1781.c | ||
| adau1781.h | ||
| adau1977-i2c.c | ||
| adau1977-spi.c | ||
| adau1977.c | ||
| adau1977.h | ||
| adau7002.c | ||
| adav80x.c | ||
| adav80x.h | ||
| adav801.c | ||
| adav803.c | ||
| ads117x.c | ||
| ak4104.c | ||
| ak4458.c | ||
| ak4458.h | ||
| ak4535.c | ||
| ak4535.h | ||
| ak4554.c | ||
| ak4613.c | ||
| ak4641.c | ||
| ak4642.c | ||
| ak4671.c | ||
| ak4671.h | ||
| ak5386.c | ||
| ak5558.c | ||
| ak5558.h | ||
| alc5623.c | ||
| alc5623.h | ||
| alc5632.c | ||
| alc5632.h | ||
| arizona.c | ||
| arizona.h | ||
| bd28623.c | ||
| bt-sco.c | ||
| cpcap.c | ||
| cq93vc.c | ||
| cs35l32.c | ||
| cs35l32.h | ||
| cs35l33.c | ||
| cs35l33.h | ||
| cs35l34.c | ||
| cs35l34.h | ||
| cs35l35.c | ||
| cs35l35.h | ||
| cs42l42.c | ||
| cs42l42.h | ||
| cs42l51-i2c.c | ||
| cs42l51.c | ||
| cs42l51.h | ||
| cs42l52.c | ||
| cs42l52.h | ||
| cs42l56.c | ||
| cs42l56.h | ||
| cs42l73.c | ||
| cs42l73.h | ||
| cs42xx8-i2c.c | ||
| cs42xx8.c | ||
| cs42xx8.h | ||
| cs47l24.c | ||
| cs47l24.h | ||
| cs53l30.c | ||
| cs53l30.h | ||
| cs4265.c | ||
| cs4265.h | ||
| cs4270.c | ||
| cs4271-i2c.c | ||
| cs4271-spi.c | ||
| cs4271.c | ||
| cs4271.h | ||
| cs4349.c | ||
| cs4349.h | ||
| cs43130.c | ||
| cs43130.h | ||
| cx20442.c | ||
| cx20442.h | ||
| da732x.c | ||
| da732x.h | ||
| da732x_reg.h | ||
| da7210.c | ||
| da7213.c | ||
| da7213.h | ||
| da7218.c | ||
| da7218.h | ||
| da7219-aad.c | ||
| da7219-aad.h | ||
| da7219.c | ||
| da7219.h | ||
| da9055.c | ||
| dio2125.c | ||
| dmic.c | ||
| es7134.c | ||
| es8316.c | ||
| es8316.h | ||
| es8328-i2c.c | ||
| es8328-spi.c | ||
| es8328.c | ||
| es8328.h | ||
| gtm601.c | ||
| hdac_hdmi.c | ||
| hdac_hdmi.h | ||
| hdmi-codec.c | ||
| ics43432.c | ||
| inno_rk3036.c | ||
| inno_rk3036.h | ||
| isabelle.c | ||
| isabelle.h | ||
| jz4740.c | ||
| l3.c | ||
| lm4857.c | ||
| lm49453.c | ||
| lm49453.h | ||
| max9759.c | ||
| max9768.c | ||
| max9850.c | ||
| max9850.h | ||
| max9860.c | ||
| max9860.h | ||
| max9867.c | ||
| max9867.h | ||
| max9877.c | ||
| max9877.h | ||
| max98088.c | ||
| max98088.h | ||
| max98090.c | ||
| max98090.h | ||
| max98095.c | ||
| max98095.h | ||
| max98357a.c | ||
| max98371.c | ||
| max98371.h | ||
| max98373.c | ||
| max98373.h | ||
| max98504.c | ||
| max98504.h | ||
| max98925.c | ||
| max98925.h | ||
| max98926.c | ||
| max98926.h | ||
| max98927.c | ||
| max98927.h | ||
| mc13783.c | ||
| mc13783.h | ||
| ml26124.c | ||
| ml26124.h | ||
| msm8916-wcd-analog.c | ||
| msm8916-wcd-digital.c | ||
| mt6351.c | ||
| mt6351.h | ||
| nau8540.c | ||
| nau8540.h | ||
| nau8810.c | ||
| nau8810.h | ||
| nau8824.c | ||
| nau8824.h | ||
| nau8825.c | ||
| nau8825.h | ||
| pcm179x-i2c.c | ||
| pcm179x-spi.c | ||
| pcm179x.c | ||
| pcm179x.h | ||
| pcm186x-i2c.c | ||
| pcm186x-spi.c | ||
| pcm186x.c | ||
| pcm186x.h | ||
| pcm512x-i2c.c | ||
| pcm512x-spi.c | ||
| pcm512x.c | ||
| pcm512x.h | ||
| pcm1681.c | ||
| pcm1789-i2c.c | ||
| pcm1789.c | ||
| pcm1789.h | ||
| pcm3008.c | ||
| pcm3008.h | ||
| pcm3168a-i2c.c | ||
| pcm3168a-spi.c | ||
| pcm3168a.c | ||
| pcm3168a.h | ||
| pcm5102a.c | ||
| rl6231.c | ||
| rl6231.h | ||
| rl6347a.c | ||
| rl6347a.h | ||
| rt274.c | ||
| rt274.h | ||
| rt286.c | ||
| rt286.h | ||
| rt298.c | ||
| rt298.h | ||
| rt1305.c | ||
| rt1305.h | ||
| rt5514-spi.c | ||
| rt5514-spi.h | ||
| rt5514.c | ||
| rt5514.h | ||
| rt5616.c | ||
| rt5616.h | ||
| rt5631.c | ||
| rt5631.h | ||
| rt5640.c | ||
| rt5640.h | ||
| rt5645.c | ||
| rt5645.h | ||
| rt5651.c | ||
| rt5651.h | ||
| rt5659.c | ||
| rt5659.h | ||
| rt5660.c | ||
| rt5660.h | ||
| rt5663.c | ||
| rt5663.h | ||
| rt5665.c | ||
| rt5665.h | ||
| rt5668.c | ||
| rt5668.h | ||
| rt5670-dsp.h | ||
| rt5670.c | ||
| rt5670.h | ||
| rt5677-spi.c | ||
| rt5677-spi.h | ||
| rt5677.c | ||
| rt5677.h | ||
| sgtl5000.c | ||
| sgtl5000.h | ||
| si476x.c | ||
| sigmadsp-i2c.c | ||
| sigmadsp-regmap.c | ||
| sigmadsp.c | ||
| sigmadsp.h | ||
| sirf-audio-codec.c | ||
| sirf-audio-codec.h | ||
| spdif_receiver.c | ||
| spdif_transmitter.c | ||
| ssm2305.c | ||
| ssm2518.c | ||
| ssm2518.h | ||
| ssm2602-i2c.c | ||
| ssm2602-spi.c | ||
| ssm2602.c | ||
| ssm2602.h | ||
| ssm4567.c | ||
| sta32x.c | ||
| sta32x.h | ||
| sta350.c | ||
| sta350.h | ||
| sta529.c | ||
| stac9766.c | ||
| sti-sas.c | ||
| tas571x.c | ||
| tas571x.h | ||
| tas2552.c | ||
| tas2552.h | ||
| tas5086.c | ||
| tas5720.c | ||
| tas5720.h | ||
| tas6424.c | ||
| tas6424.h | ||
| tda7419.c | ||
| tfa9879.c | ||
| tfa9879.h | ||
| tlv320aic3x.c | ||
| tlv320aic3x.h | ||
| tlv320aic23-i2c.c | ||
| tlv320aic23-spi.c | ||
| tlv320aic23.c | ||
| tlv320aic23.h | ||
| tlv320aic26.c | ||
| tlv320aic26.h | ||
| tlv320aic31xx.c | ||
| tlv320aic31xx.h | ||
| tlv320aic32x4-i2c.c | ||
| tlv320aic32x4-spi.c | ||
| tlv320aic32x4.c | ||
| tlv320aic32x4.h | ||
| tlv320dac33.c | ||
| tlv320dac33.h | ||
| tpa6130a2.c | ||
| tpa6130a2.h | ||
| ts3a227e.c | ||
| ts3a227e.h | ||
| tscs42xx.c | ||
| tscs42xx.h | ||
| tscs454.c | ||
| tscs454.h | ||
| twl4030.c | ||
| twl6040.c | ||
| twl6040.h | ||
| uda134x.c | ||
| uda134x.h | ||
| uda1380.c | ||
| uda1380.h | ||
| wl1273.c | ||
| wl1273.h | ||
| wm0010.c | ||
| wm1250-ev1.c | ||
| wm2000.c | ||
| wm2000.h | ||
| wm2200.c | ||
| wm2200.h | ||
| wm5100-tables.c | ||
| wm5100.c | ||
| wm5100.h | ||
| wm5102.c | ||
| wm5102.h | ||
| wm5110.c | ||
| wm5110.h | ||
| wm8350.c | ||
| wm8350.h | ||
| wm8400.c | ||
| wm8400.h | ||
| wm8510.c | ||
| wm8510.h | ||
| wm8523.c | ||
| wm8523.h | ||
| wm8524.c | ||
| wm8580.c | ||
| wm8580.h | ||
| wm8711.c | ||
| wm8711.h | ||
| wm8727.c | ||
| wm8728.c | ||
| wm8728.h | ||
| wm8731.c | ||
| wm8731.h | ||
| wm8737.c | ||
| wm8737.h | ||
| wm8741.c | ||
| wm8741.h | ||
| wm8750.c | ||
| wm8750.h | ||
| wm8753.c | ||
| wm8753.h | ||
| wm8770.c | ||
| wm8770.h | ||
| wm8776.c | ||
| wm8776.h | ||
| wm8782.c | ||
| wm8804-i2c.c | ||
| wm8804-spi.c | ||
| wm8804.c | ||
| wm8804.h | ||
| wm8900.c | ||
| wm8900.h | ||
| wm8903.c | ||
| wm8903.h | ||
| wm8904.c | ||
| wm8904.h | ||
| wm8940.c | ||
| wm8940.h | ||
| wm8955.c | ||
| wm8955.h | ||
| wm8958-dsp2.c | ||
| wm8960.c | ||
| wm8960.h | ||
| wm8961.c | ||
| wm8961.h | ||
| wm8962.c | ||
| wm8962.h | ||
| wm8971.c | ||
| wm8971.h | ||
| wm8974.c | ||
| wm8974.h | ||
| wm8978.c | ||
| wm8978.h | ||
| wm8983.c | ||
| wm8983.h | ||
| wm8985.c | ||
| wm8985.h | ||
| wm8988.c | ||
| wm8988.h | ||
| wm8990.c | ||
| wm8990.h | ||
| wm8991.c | ||
| wm8991.h | ||
| wm8993.c | ||
| wm8993.h | ||
| wm8994.c | ||
| wm8994.h | ||
| wm8995.c | ||
| wm8995.h | ||
| wm8996.c | ||
| wm8996.h | ||
| wm8997.c | ||
| wm8997.h | ||
| wm8998.c | ||
| wm8998.h | ||
| wm9081.c | ||
| wm9081.h | ||
| wm9090.c | ||
| wm9090.h | ||
| wm9705.c | ||
| wm9712.c | ||
| wm9713.c | ||
| wm9713.h | ||
| wm_adsp.c | ||
| wm_adsp.h | ||
| wm_hubs.c | ||
| wm_hubs.h | ||
| wmfw.h | ||
| zx_aud96p22.c | ||