[PATCHSET] "client_t" patchset (formerly pcmcia-b15) re-diffed and updated

Dominik Brodowski linux at dominikbrodowski.de
Sun May 16 19:59:13 EDT 2004


On Sun, May 16, 2004 at 10:35:28PM +0100, Christoph Hellwig wrote:
> > 13-bug_on_dev_list_not_null
> > 
> > All in-kernel PCMCIA devices do unregister their client in their respective
> > ->detach() function after a REMOVAL event. So, AFAICS, the dev_list iteration
> > should always be false.
> 
> synclink_cs and a bunch of pcmcia drivers still defer the unregistration
> (grep for DEV_STALE_* handling).  I've sent patches fixing this to the ISDN
> maintainers, but I haven't dealt with synclink_cs yet.

However, 12-direct_ordered_unbind causes the following. In case of an
ejection request (from cardmgr or because of physical removal) ds_event()
calls the event handler with CS_EVENT_CARD_REMOVAL, and only once that call
is completed, unbind_request() calls the ->detach function.

Taking synclink_cs as an example:

mgslpc_event() does, in
    case CS_EVENT_CARD_REMOVAL:
	    link->state &= ~DEV_PRESENT;
	    if (link->state & DEV_CONFIG) {
		    ((MGSLPC_INFO *)link->priv)->stop = 1;
		    mgslpc_release((u_long)link);
	    }
	    break;

mgslpc_release() includes     link->state &= ~DEV_CONFIG;

so that

mgslpc_detach(), which is called from unbind_request

    if (link->state & DEV_CONFIG) {
	    /* device is configured/active, mark it so when
	     * release() is called a proper detach() occurs.
	     */
	    if (debug_level >= DEBUG_LEVEL_INFO)
		    printk(KERN_DEBUG "synclinkpc: detach postponed, '%s' "
			   "still locked\n", link->dev->dev_name);
	    link->state |= DEV_STALE_LINK;
	    return;
    }

will never mark the link as DEV_STALE_LINK.


Same for the other PCMCIA drivers still using DEV_STALE_LINK. 
DEV_STALE_LINKs only occur if ->detach() is called _before_ the
event handler is notified with CS_EVENT_CARD_REMOVAL; and this
cannot happen if 12-direct_ordered_unbind is merged.

Thanks,
	Dominik
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.infradead.org/pipermail/linux-pcmcia/attachments/20040516/aa835e04/attachment.bin


More information about the linux-pcmcia mailing list