From: Heiko Carstens <hca@linux.ibm.com>
To: Arnd Bergmann <arnd@arndb.de>,
Alexandra Winter <wintera@linux.ibm.com>,
Thorsten Winkler <twinkler@linux.ibm.com>
Cc: Nathan Chancellor <nathan@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
gor@linux.ibm.com, Alexander Gordeev <agordeev@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
wintera@linux.ibm.com, twinkler@linux.ibm.com,
linux-s390@vger.kernel.org, Netdev <netdev@vger.kernel.org>,
llvm@lists.linux.dev, patches@lists.linux.dev
Subject: Re: [PATCH 1/3] s390/vmlogrdr: Remove function pointer cast
Date: Fri, 19 Apr 2024 14:15:06 +0200 [thread overview]
Message-ID: <20240419121506.23824-A-hca@linux.ibm.com> (raw)
In-Reply-To: <798df2d7-b13f-482a-8d4a-106c6492af01@app.fastmail.com>
On Thu, Apr 18, 2024 at 09:46:18PM +0200, Arnd Bergmann wrote:
> On Thu, Apr 18, 2024, at 17:15, Heiko Carstens wrote:
> >> > > > - /*
> >> > > > - * The release function could be called after the
> >> > > > - * module has been unloaded. It's _only_ task is to
> >> > > > - * free the struct. Therefore, we specify kfree()
> >> > > > - * directly here. (Probably a little bit obfuscating
> >> > > > - * but legitime ...).
> >> > > > - */
>
> I think the way this should work is to have the allocation and
> the release function in the iucv bus driver, with a function
> roughly like
>
> struct device *iucv_alloc_device(char *name,
> const struct attribute_group *attrs,
> void *priv)
> {
> dev = kzalloc(sizeof(struct device), GFP_KERNEL);
> if (!dev)
> return NULL;
>
> dev_set_name(dev, "%s", name);
> dev->bus = &iucv_bus;
> dev->parent = iucv_root;
> dev->groups = attrs;
> dev_set_drvdata(dev, priv);
> dev->release = iucv_free_dev;
>
> return dev;
> }
>
> Now the release function cannot go away as long as any module
> is loaded that links against it, and those modules cannot
> go away as long as the devices are in use.
>
> I don't remember how iucv works, but if there is a way to
> detect which system services exist, then the actual device
> creation should also be separate from the driver using those
> services, with another driver responsible for enumerating
> the existing services and creating those devices.
I have the impression we have the same discussion like it happened 20
years ago:
https://lore.kernel.org/all/OF876C2271.59086B92-ONC1256E5A.00409933-C1256E5A.00427853@de.ibm.com/
Adding extra module dependencies won't help, since it just moves the
potential races. However what could easily solve this problem is to
make CONFIG_IUCV a boolean config option instead of tristate. If it
would be compiled in, the release function cannot go away.
We have already "def_tristate y if S390" for IUCV, so it looks like
this wouldn't change anything in real life. In addition with something
like your proposed change, we should be fine.
Plus we need to fix the potential bug you introduced with commit
42af6bcbc351 ("tty: hvc-iucv: fix function pointer casts"). But at
least this is also iucv_bus related.
Alexandra, Thorsten, any objections if CONFIG_IUCV would be changed so
it can only be compiled in or out, but not as a module anymore?
next prev parent reply other threads:[~2024-04-19 12:15 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-17 18:24 [PATCH 0/3] drivers/s390: Fix instances of -Wcast-function-type-strict Nathan Chancellor
2024-04-17 18:24 ` [PATCH 1/3] s390/vmlogrdr: Remove function pointer cast Nathan Chancellor
2024-04-17 18:55 ` Arnd Bergmann
2024-04-18 5:56 ` Thomas Huth
2024-04-18 9:54 ` Heiko Carstens
2024-04-18 10:25 ` Heiko Carstens
2024-04-18 14:51 ` Nathan Chancellor
2024-04-18 15:15 ` Heiko Carstens
2024-04-18 15:34 ` Nathan Chancellor
2024-04-18 19:21 ` Heiko Carstens
2024-04-18 20:32 ` Nathan Chancellor
2024-04-18 19:46 ` Arnd Bergmann
2024-04-19 12:15 ` Heiko Carstens [this message]
2024-04-19 12:19 ` Arnd Bergmann
2024-04-19 14:12 ` Heiko Carstens
2024-04-23 7:34 ` Alexandra Winter
2024-05-06 19:26 ` Heiko Carstens
2024-04-17 18:24 ` [PATCH 2/3] s390/smsgiucv_app: " Nathan Chancellor
2024-04-17 18:56 ` Arnd Bergmann
2024-04-18 5:56 ` Thomas Huth
2024-04-17 18:24 ` [PATCH 3/3] s390/netiucv: " Nathan Chancellor
2024-04-17 18:57 ` Arnd Bergmann
2024-04-18 5:57 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240419121506.23824-A-hca@linux.ibm.com \
--to=hca@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=borntraeger@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=linux-s390@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=nathan@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=patches@lists.linux.dev \
--cc=svens@linux.ibm.com \
--cc=twinkler@linux.ibm.com \
--cc=wintera@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox