--- sys/dev/sound/pcm/feeder.c Sat Jun 16 11:39:06 2007 +++ sys/dev/sound/pcm/feeder.c Sun Jun 17 23:45:17 2007 @@ -116,7 +116,7 @@ /* initialize unit numbering */ snd_unit_init(); - if (snd_unit < 0 || snd_unit > PCMMAXUNIT) + if (snd_unit > PCMMAXUNIT) snd_unit = 0; if (snd_maxautovchans < 0 || --- sys/dev/sound/pcm/sound.c Sat Jun 16 11:39:06 2007 +++ sys/dev/sound/pcm/sound.c Sun Jun 17 23:44:24 2007 @@ -42,7 +42,7 @@ int pcm_veto_load = 1; #ifdef USING_DEVFS -int snd_unit = 0; +int snd_unit = -1; TUNABLE_INT("hw.snd.default_unit", &snd_unit); #endif @@ -801,6 +801,9 @@ pcm_unlock(d); + if (snd_unit < 0) + snd_unit = device_get_unit(dev); + return (0); } @@ -1199,8 +1202,10 @@ if (snd_unit == device_get_unit(dev)) { /* - * Reassign default unit to the next available dev. + * Reassign default unit to the next available dev, but + * reset snd_unit to something ridiculous. */ + snd_unit = -1; for (i = 0; pcm_devclass != NULL && i < devclass_get_maxunit(pcm_devclass); i++) { if (device_get_unit(dev) == i)