Re: __put_task_struct unresolved when being used in modules

From: Andrew Morton
Date: Wed Oct 13 2004 - 15:58:39 EST


Thomas Spatzier <thomas.spatzier@xxxxxxxxxx> wrote:
>
> Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote on 13.10.2004 12:29:55:
> >
> > In general module shouldn't deal with task reference counts. If we
> decide
> > you have a legitimate reason for doing this from a module after a review
> here
> > on lkml we could add an EXPORT_SYMBOL_GPL at the same time your module
> gets
> > merged.
> >
> The module is actually already in the kernel (drivers/s390/net/qeth.ko).
> We have a userspace daemon that registers with the kernel module and we
> need to send a signal to that daemon, whenever the device driver detects
> some
> change in its managed devices. This is done in qeth_notify_processes (just
> in
> case you want to take a look ;-) ).
> For this purpose, we store a pointer to the daemon's task_struct, so we can
> send a signal to that task. However, if the daemon crashes for some reason,
> we have an invalid task_struct pointer.

Drivers should not be holding references to userspace processes. Your
daemons should instead be holding references to resources within the
driver.

IOW: the daemon should be holding an open file descriptor and should be
blocked in read() or select/poll waiting for activity on that fd.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/