On Sun, 19 Aug 2018, Lukas Wunner wrote: > When the PCI hotplug core and its first user, cpqphp, were introduced in > February 2002 with historic commit a8a2069f432c, cpqphp allocated a slot > struct for its internal use plus a hotplug_slot struct to be registered > with the hotplug core and linked the two with pointers: > https://git.kernel.org/tglx/history/c/a8a2069f432c > > Nowadays, the predominant pattern in the tree is to embed ("subclass") > such structures in one another and cast to the containing struct with > container_of(). But it wasn't until July 2002 that container_of() was > introduced with historic commit ec4f214232cf: > https://git.kernel.org/tglx/history/c/ec4f214232cf > > pnv_php, introduced in 2016, did the right thing and embedded struct > hotplug_slot in its internal struct pnv_php_slot, but all other drivers > cargo-culted cpqphp's design and linked separate structs with pointers. > > Embedding structs is preferrable to linking them with pointers because > it requires fewer allocations, thereby reducing overhead and simplifying > error paths. Casting an embedded struct to the containing struct > becomes a cheap subtraction rather than a dereference. And having fewer > pointers reduces the risk of them pointing nowhere either accidentally > or due to an attack. > > Convert all drivers to embed struct hotplug_slot in their internal slot > struct. The "private" pointer in struct hotplug_slot thereby becomes > unused, so drop it. > > Signed-off-by: Lukas Wunner <lu...@wunner.de> > Cc: Rafael J. Wysocki <r...@rjwysocki.net> > Cc: Len Brown <l...@kernel.org> > Cc: Scott Murray <sc...@spiteful.org> > Cc: Benjamin Herrenschmidt <b...@kernel.crashing.org> > Cc: Paul Mackerras <pau...@samba.org> > Cc: Michael Ellerman <m...@ellerman.id.au> > Cc: Gavin Shan <gws...@linux.vnet.ibm.com> > Cc: Sebastian Ott <seb...@linux.vnet.ibm.com> > Cc: Gerald Schaefer <gerald.schae...@de.ibm.com> > Cc: Corentin Chary <corentin.ch...@gmail.com> > Cc: Darren Hart <dvh...@infradead.org> > Cc: Andy Shevchenko <a...@infradead.org>
for s390_pci_hpc.c: Acked-by: Sebastian Ott <seb...@linux.ibm.com>