diff options
Diffstat (limited to 'drivers/pcmcia/cistpl.c')
| -rw-r--r-- | drivers/pcmcia/cistpl.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c index f230f6543bf..854959cada3 100644 --- a/drivers/pcmcia/cistpl.c +++ b/drivers/pcmcia/cistpl.c @@ -1484,6 +1484,11 @@ int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *info)  	if (!s)  		return -EINVAL; +	if (s->functions) { +		WARN_ON(1); +		return -EINVAL; +	} +  	/* We do not want to validate the CIS cache... */  	mutex_lock(&s->ops_mutex);  	destroy_cis_cache(s); @@ -1639,7 +1644,7 @@ static ssize_t pccard_show_cis(struct kobject *kobj,  		count = 0;  	else {  		struct pcmcia_socket *s; -		unsigned int chains; +		unsigned int chains = 1;  		if (off + count > size)  			count = size - off; @@ -1648,7 +1653,7 @@ static ssize_t pccard_show_cis(struct kobject *kobj,  		if (!(s->state & SOCKET_PRESENT))  			return -ENODEV; -		if (pccard_validate_cis(s, &chains)) +		if (!s->functions && pccard_validate_cis(s, &chains))  			return -EIO;  		if (!chains)  			return -ENODATA;  |