diff options
Diffstat (limited to 'sound/core/device.c')
-rw-r--r-- | sound/core/device.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sound/core/device.c b/sound/core/device.c index a67dfac08c03..2d1ad4b0cd65 100644 --- a/sound/core/device.c +++ b/sound/core/device.c | |||
@@ -225,15 +225,16 @@ int snd_device_free_all(struct snd_card *card, snd_device_cmd_t cmd) | |||
225 | { | 225 | { |
226 | struct snd_device *dev; | 226 | struct snd_device *dev; |
227 | int err; | 227 | int err; |
228 | unsigned int range_low, range_high; | 228 | unsigned int range_low, range_high, type; |
229 | 229 | ||
230 | if (snd_BUG_ON(!card)) | 230 | if (snd_BUG_ON(!card)) |
231 | return -ENXIO; | 231 | return -ENXIO; |
232 | range_low = cmd * SNDRV_DEV_TYPE_RANGE_SIZE; | 232 | range_low = (__force unsigned int)cmd * SNDRV_DEV_TYPE_RANGE_SIZE; |
233 | range_high = range_low + SNDRV_DEV_TYPE_RANGE_SIZE - 1; | 233 | range_high = range_low + SNDRV_DEV_TYPE_RANGE_SIZE - 1; |
234 | __again: | 234 | __again: |
235 | list_for_each_entry(dev, &card->devices, list) { | 235 | list_for_each_entry(dev, &card->devices, list) { |
236 | if (dev->type >= range_low && dev->type <= range_high) { | 236 | type = (__force unsigned int)dev->type; |
237 | if (type >= range_low && type <= range_high) { | ||
237 | if ((err = snd_device_free(card, dev->device_data)) < 0) | 238 | if ((err = snd_device_free(card, dev->device_data)) < 0) |
238 | return err; | 239 | return err; |
239 | goto __again; | 240 | goto __again; |