static int orinoco_ioctl_setspy(struct net_device *dev, struct iw_point *srq) 
static int orinoco_ioctl_setspy(struct net_device *dev, struct iw_request_info *info, struct iw_point *srq, char *extra)  
static int orinoco_ioctl_setspy(struct net_device *dev, struct iw_point *srq){	struct orinoco_private *priv = netdev_priv(dev);	struct sockaddr address[IW_MAX_SPY];	int number = srq->length;	int i;	int err = 0;	unsigned long flags;	/* Check the number of addresses */	if (number > IW_MAX_SPY)		return -E2BIG;	/* Get the data in the driver */	if (srq->pointer) {		if (copy_from_user(address, srq->pointer,				   sizeof(struct sockaddr) * number))			return -EFAULT;	}	/* Make sure nobody mess with the structure while we do */	if (orinoco_lock(priv, &flags) != 0)		return -EBUSY;	/* orinoco_lock() doesn't disable interrupts, so make sure the	 * interrupt rx path don't get confused while we copy */	priv->spy_number = 0;	if (number > 0) {		/* Extract the addresses */		for (i = 0; i < number; i++)			memcpy(priv->spy_address[i], address[i].sa_data,			       ETH_ALEN);		/* Reset stats */		memset(priv->spy_stat, 0,		       sizeof(struct iw_quality) * IW_MAX_SPY);		/* Set number of addresses */		priv->spy_number = number;	}	/* Now, let the others play */	orinoco_unlock(priv, &flags);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/620554e406e3cc01434c658a1e597162d7e56fd6/orinoco.c/buggy/drivers/net/wireless/orinoco.c