} 
int dvb_usb_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf,	u16 rlen, int delay_ms){	int actlen,ret = -ENOMEM;	if (d->props.generic_bulk_ctrl_endpoint == 0) {		err("endpoint for generic control not specified.");		return -EINVAL;	}	if (wbuf == NULL || wlen == 0)		return -EINVAL;	if ((ret = down_interruptible(&d->usb_sem)))		return ret;	debug_dump(wbuf,wlen,deb_xfer);	ret = usb_bulk_msg(d->udev,usb_sndbulkpipe(d->udev,			d->props.generic_bulk_ctrl_endpoint), wbuf,wlen,&actlen,			2*HZ);	if (ret)		err("bulk message failed: %d (%d/%d)",ret,wlen,actlen);	else		ret = actlen != wlen ? -1 : 0;	/* an answer is expected, and no error before */	if (!ret && rbuf && rlen) {		if (delay_ms)			msleep(delay_ms);		ret = usb_bulk_msg(d->udev,usb_rcvbulkpipe(d->udev,				d->props.generic_bulk_ctrl_endpoint),rbuf,rlen,&actlen,				2*HZ);		if (ret)			err("recv bulk message failed: %d",ret);		else			debug_dump(rbuf,actlen,deb_xfer);	}	up(&d->usb_sem);	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7f5fee57812c99c95edf6794a50413c75e99fd4d/dvb-usb-urb.c/buggy/drivers/media/dvb/dvb-usb/dvb-usb-urb.c