diff options
Diffstat (limited to 'sound/oss/dev_table.c')
| -rw-r--r-- | sound/oss/dev_table.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/sound/oss/dev_table.c b/sound/oss/dev_table.c index 08274c995d06..727bdb9ba2dc 100644 --- a/sound/oss/dev_table.c +++ b/sound/oss/dev_table.c | |||
| @@ -67,14 +67,15 @@ int sound_install_audiodrv(int vers, char *name, struct audio_driver *driver, | |||
| 67 | return -(EBUSY); | 67 | return -(EBUSY); |
| 68 | } | 68 | } |
| 69 | d = (struct audio_driver *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct audio_driver))); | 69 | d = (struct audio_driver *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct audio_driver))); |
| 70 | 70 | sound_nblocks++; | |
| 71 | if (sound_nblocks < 1024) | 71 | if (sound_nblocks >= MAX_MEM_BLOCKS) |
| 72 | sound_nblocks++; | 72 | sound_nblocks = MAX_MEM_BLOCKS - 1; |
| 73 | 73 | ||
| 74 | op = (struct audio_operations *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct audio_operations))); | 74 | op = (struct audio_operations *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct audio_operations))); |
| 75 | sound_nblocks++; | ||
| 76 | if (sound_nblocks >= MAX_MEM_BLOCKS) | ||
| 77 | sound_nblocks = MAX_MEM_BLOCKS - 1; | ||
| 75 | 78 | ||
| 76 | if (sound_nblocks < 1024) | ||
| 77 | sound_nblocks++; | ||
| 78 | if (d == NULL || op == NULL) { | 79 | if (d == NULL || op == NULL) { |
| 79 | printk(KERN_ERR "Sound: Can't allocate driver for (%s)\n", name); | 80 | printk(KERN_ERR "Sound: Can't allocate driver for (%s)\n", name); |
| 80 | sound_unload_audiodev(num); | 81 | sound_unload_audiodev(num); |
| @@ -128,9 +129,10 @@ int sound_install_mixer(int vers, char *name, struct mixer_operations *driver, | |||
| 128 | until you unload sound! */ | 129 | until you unload sound! */ |
| 129 | 130 | ||
| 130 | op = (struct mixer_operations *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct mixer_operations))); | 131 | op = (struct mixer_operations *) (sound_mem_blocks[sound_nblocks] = vmalloc(sizeof(struct mixer_operations))); |
| 132 | sound_nblocks++; | ||
| 133 | if (sound_nblocks >= MAX_MEM_BLOCKS) | ||
| 134 | sound_nblocks = MAX_MEM_BLOCKS - 1; | ||
| 131 | 135 | ||
| 132 | if (sound_nblocks < 1024) | ||
| 133 | sound_nblocks++; | ||
| 134 | if (op == NULL) { | 136 | if (op == NULL) { |
| 135 | printk(KERN_ERR "Sound: Can't allocate mixer driver for (%s)\n", name); | 137 | printk(KERN_ERR "Sound: Can't allocate mixer driver for (%s)\n", name); |
| 136 | return -ENOMEM; | 138 | return -ENOMEM; |
