Hi Linus, On Sun, Sep 2, 2012 at 12:48 PM, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > On Sat, Sep 1, 2012 at 1:14 PM, shiraz hashim > <shiraz.linux.kernel@xxxxxxxxx> wrote: >> Hi Roland, >> >> On Wed, Aug 22, 2012 at 7:19 PM, Roland Stigge <stigge@xxxxxxxxx> wrote: >>> @@ -2016,6 +2030,8 @@ pl022_probe(struct amba_device *adev, co >>> pl022->master_info = platform_info; >>> pl022->adev = adev; >>> pl022->vendor = id->data; >>> + /* Point chipselects to allocated memory beyond the main struct */ >>> + pl022->chipselects = (int *) pl022 + sizeof(struct pl022); >> >> This is going beyond memory allocated for chipselects >> as it adds 4 * sizeof(struct pl022) bytes to pl022. > > Yes that is why the allocation looks like this: > > + master = spi_alloc_master(dev, sizeof(struct pl022) + sizeof(int) * > + platform_info->num_chipselect); > The allocation is such because type of chipselects is int. The statement for allocation is correct, but pl022->chipselects = (int *) pl022 + sizeof(struct pl022); is not adding sizeof(struct pl022) bytes to pl022 base (which we want), but infact 4 times the size of pl022 (because type of pl022 is now int *). Do you get my point ? This would go way beyond memory allocated for chipselects. -- regards Shiraz Hashim -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html