Thread (18 messages) 18 messages, 5 authors, 2022-06-07

Re: [PATCH v5 7/7] fbdev: Make registered_fb[] private to fbmem.c

From: Javier Martinez Canillas <javierm@redhat.com>
Date: 2022-05-11 17:34:49
Also in: dri-devel, linux-staging, lkml

Hello Guenter,

On 5/11/22 19:17, Guenter Roeck wrote:
On 5/11/22 10:00, Sam Ravnborg wrote:
[snip]
quoted
quoted
  struct fb_info *registered_fb[FB_MAX] __read_mostly;
-EXPORT_SYMBOL(registered_fb);
-
  int num_registered_fb __read_mostly;
+#if IS_ENABLED(CONFIG_FB_OLPC_DCON)
+EXPORT_SYMBOL(registered_fb);
  EXPORT_SYMBOL(num_registered_fb);
+#endif
It is stuff like this I refer to as "ugly" in the comment above.
My "solution" for that kind of thing is to use a namespace,
such as

EXPORT_SYMBOL_NS(registered_fb, FB_OLPC_DCON);
EXPORT_SYMBOL_NS(num_registered_fb, FB_OLPC_DCON);
Using a namespace in this case is indeed a great idea I think.

I've used in the past to limit the export of a symbol for within a driver
that could be scattered across different compilations units, but it never
occurred to me using it to limit symbols exported by core code.
 
and import it from the offending code. That avoids ifdefs
while at the same time limiting the use of the symbols
to the expected scope. Of course that could be abused but
that abuse would be obvious.
Agreed. For the next revision, besides using an namespaced export symbol
as you suggested, I'll include a comment to make clear that it shouldn't
by any other driver and FB_OLPC_DCON fixed instead.


-- 
Best regards,

Javier Martinez Canillas
Linux Engineering
Red Hat
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help