Re: Linux v2.6.18-rc3

Takashi Iwai
2006-08-02T10:41:48Z

At Sun, 30 Jul 2006 17:42:32 GMT,
Hubert Tonneau wrote:
>
> I've tracked down the USB audio cards not working anymore with 2.6.17 as opposed
> to 2.6.16 to the fact that opening /dev/dsp with O_RDWR works with any USB
> audio card under 2.6.16 whereas starting from 2.6.17 O_WRONLY is mandatory
> if the card has no mic or line in.

Do you really get Oops with 2.6.17-final, too?
AFAIK, there was a bug in the early 2.6.17-rc regarding OSS emulation,
but it got fixed in the later rc.

The behavior of invalid O_* flag seems incompatible with the older
version. Although I don't think it's totally wrong behavior, surely
better to keep the compatibility. The patch below should fix it.

Thanks,

Takashi

--- linux-2.6.17.4/sound/core/oss/pcm_oss.c 2006-08-02 12:35:10.000000000 +0200
+++ linux-2.6.17.4/sound/core/oss/pcm_oss.c 2006-08-02 12:36:28.000000000 +0200
@@ -1745,6 +1745,8 @@ static int snd_pcm_oss_open_file(struct
for (idx = 0; idx < 2; idx++) {
if (setup[idx].disable)
continue;
+ if (! pcm->streams[idx].substream_count)
+ continue; /* no matching substream */
if (idx == SNDRV_PCM_STREAM_PLAYBACK) {
if (! (f_mode & FMODE_WRITE))
continue;