[PATCH v4 2/4] input: apple_z2: Add a driver for Apple Z2 touchscreens

Christophe JAILLET christophe.jaillet at wanadoo.fr
Thu Jan 16 10:29:22 PST 2025


>> +static int apple_z2_probe(struct spi_device *spi)
>> +{
>> +    struct device *dev = &spi->dev;
>> +    struct apple_z2 *z2;
>> +    int error;
>> +
>> +    z2 = devm_kzalloc(dev, sizeof(*z2), GFP_KERNEL);
>> +    if (!z2)
>> +        return -ENOMEM;
>> +
>> +    z2->tx_buf = devm_kzalloc(dev, sizeof(struct 
>> apple_z2_read_interrupt_cmd), GFP_KERNEL);
>> +    z2->rx_buf = devm_kzalloc(dev, 4096, GFP_KERNEL);
> 
> This will allocate 8192 bytes because of the way the allocator works.
> It needs around 40 bytes for the devm stuff + 4096 requested. So 
> rounding rules will allocate 8192 bytes.
> 
> So either you could allocate "for free" much more space, or you could 
> allocate (and document...)
>      z2->rx_buf = devm_kzalloc(dev, 4096 - sizeof(struct devres), 
> GFP_KERNEL);
> 
> or have an explicit devm_add_action_or_reset() that would require less 
> memory, but would add some LoC.
> 

or leave it as-is, of course ;-)

> 
> See https://elixir.bootlin.com/linux/v6.13-rc3/source/drivers/base/ 
> devres.c#L97
> 





More information about the linux-arm-kernel mailing list