James Bottomley
unread,Dec 3, 2024, 10:35:02 AM12/3/24Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Zijun Hu, Thomas Weißschuh, Greg Kroah-Hartman, Uwe Kleine-König, Rafael J. Wysocki, Chun-Kuang Hu, Philipp Zabel, David Airlie, Simona Vetter, Matthias Brugger, AngeloGioacchino Del Regno, Jean Delvare, Guenter Roeck, Martin Tuma, Mauro Carvalho Chehab, Andreas Noever, Michael Jamet, Mika Westerberg, Yehezkel Bernat, Linus Walleij, Bartosz Golaszewski, Andrew Lunn, Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny, Takashi Sakamoto, Jiri Slaby, Heikki Krogerus, Srinivas Kandagatla, Lee Duncan, Chris Leech, Mike Christie, Martin K. Petersen, Nilesh Javali, Manish Rangankar, GR-QLogic-Sto...@marvell.com, Davidlohr Bueso, Jonathan Cameron, Alison Schofield, Andreas Larsson, Stuart Yoder, Laurentiu Tudor, Jens Axboe, Sudeep Holla, Cristian Marussi, Ard Biesheuvel, Bjorn Andersson, Mathieu Poirier, linux-...@vger.kernel.org, dri-...@lists.freedesktop.org, linux-m...@lists.infradead.org, linux-ar...@lists.infradead.org, linux...@vger.kernel.org, linux...@vger.kernel.org, linu...@vger.kernel.org, linux...@vger.kernel.org, net...@vger.kernel.org, linu...@vger.kernel.org, nvd...@lists.linux.dev, linux13...@lists.sourceforge.net, linux-...@vger.kernel.org, linux...@vger.kernel.org, open-...@googlegroups.com, linux...@vger.kernel.org, linu...@vger.kernel.org, sparc...@vger.kernel.org, linux...@vger.kernel.org, arm-...@vger.kernel.org, linu...@vger.kernel.org, linux-re...@vger.kernel.org, Zijun Hu
On Tue, 2024-12-03 at 22:56 +0800, Zijun Hu wrote:
> On 2024/12/3 22:07, Thomas Weißschuh wrote:
> > Casting function pointers like that should be detected and trapped
> > by control flow integrity checking (KCFI).
> >
> > Another possibility would be to use a macro and _Generic to
> > dispatch to two different backing functions. See __BIN_ATTR() in
> > include/linux/sysfs.h for an inspiration.
That's way over complicated for this conversion: done properly there
should be no need for _Generic() compile time type matching at all.
> this way may fix building error issue but does not achieve our
> purpose. our purpose is that there are only constified
> device_find_child().
>
>
> > This also enables an incremental migration.
>
> change the API prototype from:
> device_find_child(..., void *data_0, int (*match)(struct device *dev,
> void *data));
>
> to:
> device_find_child(..., const void *data_0, int (*match)(struct device
> *dev, const void *data));
>
> For @data_0, void * -> const void * is okay.
> but for @match, the problem is function pointer type incompatibility.
>
> there are two solutions base on discussions.
>
> 1) squashing likewise Greg mentioned.
> Do all of the "prep work" first, and then
> do the const change at the very end, all at once.
>
> 2) as changing platform_driver's remove() prototype.
> Commit: e70140ba0d2b ("Get rid of 'remove_new' relic from platform
> driver struct")
>
> introduce extra device_find_child_new() which is constified -> use
> *_new() replace ALL device_find_child() instances one by one ->
> remove device_find_child() -> rename *_new() to device_find_child()
> once.
Why bother with the last step, which churns the entire code base again?
Why not call the new function device_find_child_const() and simply keep
it (it's descriptive of its function). That way you can have a patch
series without merging and at the end simply remove the old function.
Regards,
James