diff options
Diffstat (limited to 'drivers/pcmcia/ds.c')
| -rw-r--r-- | drivers/pcmcia/ds.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c index ad93ebd7b2a..cb6036d89e5 100644 --- a/drivers/pcmcia/ds.c +++ b/drivers/pcmcia/ds.c @@ -24,6 +24,7 @@  #include <linux/firmware.h>  #include <linux/kref.h>  #include <linux/dma-mapping.h> +#include <linux/slab.h>  #include <pcmcia/cs_types.h>  #include <pcmcia/cs.h> @@ -509,8 +510,12 @@ struct pcmcia_device *pcmcia_device_add(struct pcmcia_socket *s, unsigned int fu  	p_dev->device_no = (s->device_count++);  	mutex_unlock(&s->ops_mutex); -	/* max of 2 devices per card */ -	if (p_dev->device_no >= 2) +	/* max of 2 PFC devices */ +	if ((p_dev->device_no >= 2) && (function == 0)) +		goto err_free; + +	/* max of 4 devices overall */ +	if (p_dev->device_no >= 4)  		goto err_free;  	p_dev->socket = s;  |