X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Fclass%2Faudio.c;h=648bbb033bb2b034ed64ea3f298e8b007d312fef;hb=5020cac828f9f6c98a685598599a1dc798712005;hp=42f60fa37d2495d8b3489dca8375a13c1047ae50;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/drivers/usb/class/audio.c b/drivers/usb/class/audio.c index 42f60fa37..648bbb033 100644 --- a/drivers/usb/class/audio.c +++ b/drivers/usb/class/audio.c @@ -1974,7 +1974,7 @@ static int usb_audio_open_mixdev(struct inode *inode, struct file *file) s->count++; up(&open_sem); - return nonseekable_open(inode, file); + return 0; } static int usb_audio_release_mixdev(struct inode *inode, struct file *file) @@ -2147,6 +2147,8 @@ static ssize_t usb_audio_read(struct file *file, char __user *buffer, size_t cou unsigned int ptr; int cnt, err; + if (ppos != &file->f_pos) + return -ESPIPE; if (as->usbin.dma.mapped) return -ENXIO; if (!as->usbin.dma.ready && (ret = prog_dmabuf_in(as))) @@ -2214,6 +2216,8 @@ static ssize_t usb_audio_write(struct file *file, const char __user *buffer, siz unsigned int start_thr; int cnt, err; + if (ppos != &file->f_pos) + return -ESPIPE; if (as->usbout.dma.mapped) return -ENXIO; if (!as->usbout.dma.ready && (ret = prog_dmabuf_out(as))) @@ -2684,7 +2688,7 @@ static int usb_audio_open(struct inode *inode, struct file *file) as->open_mode |= file->f_mode & (FMODE_READ | FMODE_WRITE); s->count++; up(&open_sem); - return nonseekable_open(inode, file); + return 0; } static int usb_audio_release(struct inode *inode, struct file *file)