Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: core: sparse cleanups

Change the core code where sparse complains. In most cases, this means
just adding annotations to confirm that we indeed want to do the dirty
things we're doing.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Clemens Ladisch and committed by
Takashi Iwai
fea952e5 88b27fda

+160 -137
+3
include/sound/mixer_oss.h
··· 73 73 struct snd_mixer_oss *mixer; 74 74 }; 75 75 76 + int snd_mixer_oss_ioctl_card(struct snd_card *card, 77 + unsigned int cmd, unsigned long arg); 78 + 76 79 #endif /* CONFIG_SND_MIXER_OSS */ 77 80 78 81 #endif /* __SOUND_MIXER_OSS_H */
+46 -45
include/sound/pcm.h
··· 136 136 SNDRV_PCM_RATE_88200|SNDRV_PCM_RATE_96000) 137 137 #define SNDRV_PCM_RATE_8000_192000 (SNDRV_PCM_RATE_8000_96000|SNDRV_PCM_RATE_176400|\ 138 138 SNDRV_PCM_RATE_192000) 139 - #define SNDRV_PCM_FMTBIT_S8 (1ULL << SNDRV_PCM_FORMAT_S8) 140 - #define SNDRV_PCM_FMTBIT_U8 (1ULL << SNDRV_PCM_FORMAT_U8) 141 - #define SNDRV_PCM_FMTBIT_S16_LE (1ULL << SNDRV_PCM_FORMAT_S16_LE) 142 - #define SNDRV_PCM_FMTBIT_S16_BE (1ULL << SNDRV_PCM_FORMAT_S16_BE) 143 - #define SNDRV_PCM_FMTBIT_U16_LE (1ULL << SNDRV_PCM_FORMAT_U16_LE) 144 - #define SNDRV_PCM_FMTBIT_U16_BE (1ULL << SNDRV_PCM_FORMAT_U16_BE) 145 - #define SNDRV_PCM_FMTBIT_S24_LE (1ULL << SNDRV_PCM_FORMAT_S24_LE) 146 - #define SNDRV_PCM_FMTBIT_S24_BE (1ULL << SNDRV_PCM_FORMAT_S24_BE) 147 - #define SNDRV_PCM_FMTBIT_U24_LE (1ULL << SNDRV_PCM_FORMAT_U24_LE) 148 - #define SNDRV_PCM_FMTBIT_U24_BE (1ULL << SNDRV_PCM_FORMAT_U24_BE) 149 - #define SNDRV_PCM_FMTBIT_S32_LE (1ULL << SNDRV_PCM_FORMAT_S32_LE) 150 - #define SNDRV_PCM_FMTBIT_S32_BE (1ULL << SNDRV_PCM_FORMAT_S32_BE) 151 - #define SNDRV_PCM_FMTBIT_U32_LE (1ULL << SNDRV_PCM_FORMAT_U32_LE) 152 - #define SNDRV_PCM_FMTBIT_U32_BE (1ULL << SNDRV_PCM_FORMAT_U32_BE) 153 - #define SNDRV_PCM_FMTBIT_FLOAT_LE (1ULL << SNDRV_PCM_FORMAT_FLOAT_LE) 154 - #define SNDRV_PCM_FMTBIT_FLOAT_BE (1ULL << SNDRV_PCM_FORMAT_FLOAT_BE) 155 - #define SNDRV_PCM_FMTBIT_FLOAT64_LE (1ULL << SNDRV_PCM_FORMAT_FLOAT64_LE) 156 - #define SNDRV_PCM_FMTBIT_FLOAT64_BE (1ULL << SNDRV_PCM_FORMAT_FLOAT64_BE) 157 - #define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE (1ULL << SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE) 158 - #define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE (1ULL << SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE) 159 - #define SNDRV_PCM_FMTBIT_MU_LAW (1ULL << SNDRV_PCM_FORMAT_MU_LAW) 160 - #define SNDRV_PCM_FMTBIT_A_LAW (1ULL << SNDRV_PCM_FORMAT_A_LAW) 161 - #define SNDRV_PCM_FMTBIT_IMA_ADPCM (1ULL << SNDRV_PCM_FORMAT_IMA_ADPCM) 162 - #define SNDRV_PCM_FMTBIT_MPEG (1ULL << SNDRV_PCM_FORMAT_MPEG) 163 - #define SNDRV_PCM_FMTBIT_GSM (1ULL << SNDRV_PCM_FORMAT_GSM) 164 - #define SNDRV_PCM_FMTBIT_SPECIAL (1ULL << SNDRV_PCM_FORMAT_SPECIAL) 165 - #define SNDRV_PCM_FMTBIT_S24_3LE (1ULL << SNDRV_PCM_FORMAT_S24_3LE) 166 - #define SNDRV_PCM_FMTBIT_U24_3LE (1ULL << SNDRV_PCM_FORMAT_U24_3LE) 167 - #define SNDRV_PCM_FMTBIT_S24_3BE (1ULL << SNDRV_PCM_FORMAT_S24_3BE) 168 - #define SNDRV_PCM_FMTBIT_U24_3BE (1ULL << SNDRV_PCM_FORMAT_U24_3BE) 169 - #define SNDRV_PCM_FMTBIT_S20_3LE (1ULL << SNDRV_PCM_FORMAT_S20_3LE) 170 - #define SNDRV_PCM_FMTBIT_U20_3LE (1ULL << SNDRV_PCM_FORMAT_U20_3LE) 171 - #define SNDRV_PCM_FMTBIT_S20_3BE (1ULL << SNDRV_PCM_FORMAT_S20_3BE) 172 - #define SNDRV_PCM_FMTBIT_U20_3BE (1ULL << SNDRV_PCM_FORMAT_U20_3BE) 173 - #define SNDRV_PCM_FMTBIT_S18_3LE (1ULL << SNDRV_PCM_FORMAT_S18_3LE) 174 - #define SNDRV_PCM_FMTBIT_U18_3LE (1ULL << SNDRV_PCM_FORMAT_U18_3LE) 175 - #define SNDRV_PCM_FMTBIT_S18_3BE (1ULL << SNDRV_PCM_FORMAT_S18_3BE) 176 - #define SNDRV_PCM_FMTBIT_U18_3BE (1ULL << SNDRV_PCM_FORMAT_U18_3BE) 177 - #define SNDRV_PCM_FMTBIT_G723_24 (1ULL << SNDRV_PCM_FORMAT_G723_24) 178 - #define SNDRV_PCM_FMTBIT_G723_24_1B (1ULL << SNDRV_PCM_FORMAT_G723_24_1B) 179 - #define SNDRV_PCM_FMTBIT_G723_40 (1ULL << SNDRV_PCM_FORMAT_G723_40) 180 - #define SNDRV_PCM_FMTBIT_G723_40_1B (1ULL << SNDRV_PCM_FORMAT_G723_40_1B) 139 + #define _SNDRV_PCM_FMTBIT(fmt) (1ULL << (__force int)SNDRV_PCM_FORMAT_##fmt) 140 + #define SNDRV_PCM_FMTBIT_S8 _SNDRV_PCM_FMTBIT(S8) 141 + #define SNDRV_PCM_FMTBIT_U8 _SNDRV_PCM_FMTBIT(U8) 142 + #define SNDRV_PCM_FMTBIT_S16_LE _SNDRV_PCM_FMTBIT(S16_LE) 143 + #define SNDRV_PCM_FMTBIT_S16_BE _SNDRV_PCM_FMTBIT(S16_BE) 144 + #define SNDRV_PCM_FMTBIT_U16_LE _SNDRV_PCM_FMTBIT(U16_LE) 145 + #define SNDRV_PCM_FMTBIT_U16_BE _SNDRV_PCM_FMTBIT(U16_BE) 146 + #define SNDRV_PCM_FMTBIT_S24_LE _SNDRV_PCM_FMTBIT(S24_LE) 147 + #define SNDRV_PCM_FMTBIT_S24_BE _SNDRV_PCM_FMTBIT(S24_BE) 148 + #define SNDRV_PCM_FMTBIT_U24_LE _SNDRV_PCM_FMTBIT(U24_LE) 149 + #define SNDRV_PCM_FMTBIT_U24_BE _SNDRV_PCM_FMTBIT(U24_BE) 150 + #define SNDRV_PCM_FMTBIT_S32_LE _SNDRV_PCM_FMTBIT(S32_LE) 151 + #define SNDRV_PCM_FMTBIT_S32_BE _SNDRV_PCM_FMTBIT(S32_BE) 152 + #define SNDRV_PCM_FMTBIT_U32_LE _SNDRV_PCM_FMTBIT(U32_LE) 153 + #define SNDRV_PCM_FMTBIT_U32_BE _SNDRV_PCM_FMTBIT(U32_BE) 154 + #define SNDRV_PCM_FMTBIT_FLOAT_LE _SNDRV_PCM_FMTBIT(FLOAT_LE) 155 + #define SNDRV_PCM_FMTBIT_FLOAT_BE _SNDRV_PCM_FMTBIT(FLOAT_BE) 156 + #define SNDRV_PCM_FMTBIT_FLOAT64_LE _SNDRV_PCM_FMTBIT(FLOAT64_LE) 157 + #define SNDRV_PCM_FMTBIT_FLOAT64_BE _SNDRV_PCM_FMTBIT(FLOAT64_BE) 158 + #define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_LE) 159 + #define SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE _SNDRV_PCM_FMTBIT(IEC958_SUBFRAME_BE) 160 + #define SNDRV_PCM_FMTBIT_MU_LAW _SNDRV_PCM_FMTBIT(MU_LAW) 161 + #define SNDRV_PCM_FMTBIT_A_LAW _SNDRV_PCM_FMTBIT(A_LAW) 162 + #define SNDRV_PCM_FMTBIT_IMA_ADPCM _SNDRV_PCM_FMTBIT(IMA_ADPCM) 163 + #define SNDRV_PCM_FMTBIT_MPEG _SNDRV_PCM_FMTBIT(MPEG) 164 + #define SNDRV_PCM_FMTBIT_GSM _SNDRV_PCM_FMTBIT(GSM) 165 + #define SNDRV_PCM_FMTBIT_SPECIAL _SNDRV_PCM_FMTBIT(SPECIAL) 166 + #define SNDRV_PCM_FMTBIT_S24_3LE _SNDRV_PCM_FMTBIT(S24_3LE) 167 + #define SNDRV_PCM_FMTBIT_U24_3LE _SNDRV_PCM_FMTBIT(U24_3LE) 168 + #define SNDRV_PCM_FMTBIT_S24_3BE _SNDRV_PCM_FMTBIT(S24_3BE) 169 + #define SNDRV_PCM_FMTBIT_U24_3BE _SNDRV_PCM_FMTBIT(U24_3BE) 170 + #define SNDRV_PCM_FMTBIT_S20_3LE _SNDRV_PCM_FMTBIT(S20_3LE) 171 + #define SNDRV_PCM_FMTBIT_U20_3LE _SNDRV_PCM_FMTBIT(U20_3LE) 172 + #define SNDRV_PCM_FMTBIT_S20_3BE _SNDRV_PCM_FMTBIT(S20_3BE) 173 + #define SNDRV_PCM_FMTBIT_U20_3BE _SNDRV_PCM_FMTBIT(U20_3BE) 174 + #define SNDRV_PCM_FMTBIT_S18_3LE _SNDRV_PCM_FMTBIT(S18_3LE) 175 + #define SNDRV_PCM_FMTBIT_U18_3LE _SNDRV_PCM_FMTBIT(U18_3LE) 176 + #define SNDRV_PCM_FMTBIT_S18_3BE _SNDRV_PCM_FMTBIT(S18_3BE) 177 + #define SNDRV_PCM_FMTBIT_U18_3BE _SNDRV_PCM_FMTBIT(U18_3BE) 178 + #define SNDRV_PCM_FMTBIT_G723_24 _SNDRV_PCM_FMTBIT(G723_24) 179 + #define SNDRV_PCM_FMTBIT_G723_24_1B _SNDRV_PCM_FMTBIT(G723_24_1B) 180 + #define SNDRV_PCM_FMTBIT_G723_40 _SNDRV_PCM_FMTBIT(G723_40) 181 + #define SNDRV_PCM_FMTBIT_G723_40_1B _SNDRV_PCM_FMTBIT(G723_40_1B) 181 182 182 183 #ifdef SNDRV_LITTLE_ENDIAN 183 184 #define SNDRV_PCM_FMTBIT_S16 SNDRV_PCM_FMTBIT_S16_LE ··· 491 490 int snd_pcm_status(struct snd_pcm_substream *substream, 492 491 struct snd_pcm_status *status); 493 492 int snd_pcm_start(struct snd_pcm_substream *substream); 494 - int snd_pcm_stop(struct snd_pcm_substream *substream, int status); 493 + int snd_pcm_stop(struct snd_pcm_substream *substream, snd_pcm_state_t status); 495 494 int snd_pcm_drain_done(struct snd_pcm_substream *substream); 496 495 #ifdef CONFIG_PM 497 496 int snd_pcm_suspend(struct snd_pcm_substream *substream); ··· 749 748 return &params->intervals[var - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL]; 750 749 } 751 750 752 - #define params_access(p) snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_ACCESS)) 753 - #define params_format(p) snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_FORMAT)) 751 + #define params_access(p) ((__force snd_pcm_access_t)snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_ACCESS))) 752 + #define params_format(p) ((__force snd_pcm_format_t)snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_FORMAT))) 754 753 #define params_subformat(p) snd_mask_min(hw_param_mask((p), SNDRV_PCM_HW_PARAM_SUBFORMAT)) 755 754 #define params_channels(p) hw_param_interval((p), SNDRV_PCM_HW_PARAM_CHANNELS)->min 756 755 #define params_rate(p) hw_param_interval((p), SNDRV_PCM_HW_PARAM_RATE)->min
+4 -3
sound/core/device.c
··· 225 225 { 226 226 struct snd_device *dev; 227 227 int err; 228 - unsigned int range_low, range_high; 228 + unsigned int range_low, range_high, type; 229 229 230 230 if (snd_BUG_ON(!card)) 231 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 233 range_high = range_low + SNDRV_DEV_TYPE_RANGE_SIZE - 1; 234 234 __again: 235 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 238 if ((err = snd_device_free(card, dev->device_data)) < 0) 238 239 return err; 239 240 goto __again;
+2 -1
sound/core/memalloc.c
··· 192 192 dmab->bytes = 0; 193 193 switch (type) { 194 194 case SNDRV_DMA_TYPE_CONTINUOUS: 195 - dmab->area = snd_malloc_pages(size, (unsigned long)device); 195 + dmab->area = snd_malloc_pages(size, 196 + (__force gfp_t)(unsigned long)device); 196 197 dmab->addr = 0; 197 198 break; 198 199 #ifdef CONFIG_HAS_DMA
+4 -3
sound/core/oss/linear.c
··· 114 114 return frames; 115 115 } 116 116 117 - static void init_data(struct linear_priv *data, int src_format, int dst_format) 117 + static void init_data(struct linear_priv *data, 118 + snd_pcm_format_t src_format, snd_pcm_format_t dst_format) 118 119 { 119 120 int src_le, dst_le, src_bytes, dst_bytes; 120 121 ··· 141 140 if (snd_pcm_format_signed(src_format) != 142 141 snd_pcm_format_signed(dst_format)) { 143 142 if (dst_le) 144 - data->flip = cpu_to_le32(0x80000000); 143 + data->flip = (__force u32)cpu_to_le32(0x80000000); 145 144 else 146 - data->flip = cpu_to_be32(0x80000000); 145 + data->flip = (__force u32)cpu_to_be32(0x80000000); 147 146 } 148 147 } 149 148
+6 -4
sound/core/oss/mixer_oss.c
··· 190 190 return -EIO; 191 191 if (mixer->put_recsrc && mixer->get_recsrc) { /* exclusive */ 192 192 int err; 193 - if ((err = mixer->get_recsrc(fmixer, &result)) < 0) 193 + unsigned int index; 194 + if ((err = mixer->get_recsrc(fmixer, &index)) < 0) 194 195 return err; 195 - result = 1 << result; 196 + result = 1 << index; 196 197 } else { 197 198 struct snd_mixer_oss_slot *pslot; 198 199 int chn; ··· 215 214 struct snd_mixer_oss *mixer = fmixer->mixer; 216 215 struct snd_mixer_oss_slot *pslot; 217 216 int chn, active; 217 + unsigned int index; 218 218 int result = 0; 219 219 220 220 if (mixer == NULL) ··· 224 222 if (recsrc & ~mixer->oss_recsrc) 225 223 recsrc &= ~mixer->oss_recsrc; 226 224 mixer->put_recsrc(fmixer, ffz(~recsrc)); 227 - mixer->get_recsrc(fmixer, &result); 228 - result = 1 << result; 225 + mixer->get_recsrc(fmixer, &index); 226 + result = 1 << index; 229 227 } 230 228 for (chn = 0; chn < 31; chn++) { 231 229 pslot = &mixer->slots[chn];
+1 -1
sound/core/oss/mulaw.c
··· 274 274 return frames; 275 275 } 276 276 277 - static void init_data(struct mulaw_priv *data, int format) 277 + static void init_data(struct mulaw_priv *data, snd_pcm_format_t format) 278 278 { 279 279 #ifdef SNDRV_LITTLE_ENDIAN 280 280 data->cvt_endian = snd_pcm_format_big_endian(format) > 0;
+28 -23
sound/core/oss/pcm_oss.c
··· 41 41 #include <sound/info.h> 42 42 #include <linux/soundcard.h> 43 43 #include <sound/initval.h> 44 + #include <sound/mixer_oss.h> 44 45 45 46 #define OSS_ALSAEMULVER _SIOR ('M', 249, int) 46 47 ··· 61 60 MODULE_ALIAS_SNDRV_MINOR(SNDRV_MINOR_OSS_PCM); 62 61 MODULE_ALIAS_SNDRV_MINOR(SNDRV_MINOR_OSS_PCM1); 63 62 64 - extern int snd_mixer_oss_ioctl_card(struct snd_card *card, unsigned int cmd, unsigned long arg); 65 63 static int snd_pcm_oss_get_rate(struct snd_pcm_oss_file *pcm_oss_file); 66 64 static int snd_pcm_oss_get_channels(struct snd_pcm_oss_file *pcm_oss_file); 67 65 static int snd_pcm_oss_get_format(struct snd_pcm_oss_file *pcm_oss_file); ··· 656 656 #define AFMT_AC3 0x00000400 657 657 #define AFMT_VORBIS 0x00000800 658 658 659 - static int snd_pcm_oss_format_from(int format) 659 + static snd_pcm_format_t snd_pcm_oss_format_from(int format) 660 660 { 661 661 switch (format) { 662 662 case AFMT_MU_LAW: return SNDRV_PCM_FORMAT_MU_LAW; ··· 680 680 } 681 681 } 682 682 683 - static int snd_pcm_oss_format_to(int format) 683 + static int snd_pcm_oss_format_to(snd_pcm_format_t format) 684 684 { 685 685 switch (format) { 686 686 case SNDRV_PCM_FORMAT_MU_LAW: return AFMT_MU_LAW; ··· 843 843 size_t oss_frame_size; 844 844 int err; 845 845 int direct; 846 - int format, sformat, n; 846 + snd_pcm_format_t format, sformat; 847 + int n; 847 848 struct snd_mask sformat_mask; 848 849 struct snd_mask mask; 849 850 ··· 869 868 _snd_pcm_hw_param_min(sparams, SNDRV_PCM_HW_PARAM_PERIODS, 2, 0); 870 869 snd_mask_none(&mask); 871 870 if (atomic_read(&substream->mmap_count)) 872 - snd_mask_set(&mask, SNDRV_PCM_ACCESS_MMAP_INTERLEAVED); 871 + snd_mask_set(&mask, (__force int)SNDRV_PCM_ACCESS_MMAP_INTERLEAVED); 873 872 else { 874 - snd_mask_set(&mask, SNDRV_PCM_ACCESS_RW_INTERLEAVED); 873 + snd_mask_set(&mask, (__force int)SNDRV_PCM_ACCESS_RW_INTERLEAVED); 875 874 if (!direct) 876 - snd_mask_set(&mask, SNDRV_PCM_ACCESS_RW_NONINTERLEAVED); 875 + snd_mask_set(&mask, (__force int)SNDRV_PCM_ACCESS_RW_NONINTERLEAVED); 877 876 } 878 877 err = snd_pcm_hw_param_mask(substream, sparams, SNDRV_PCM_HW_PARAM_ACCESS, &mask); 879 878 if (err < 0) { ··· 892 891 else 893 892 sformat = snd_pcm_plug_slave_format(format, &sformat_mask); 894 893 895 - if (sformat < 0 || !snd_mask_test(&sformat_mask, sformat)) { 896 - for (sformat = 0; sformat <= SNDRV_PCM_FORMAT_LAST; sformat++) { 897 - if (snd_mask_test(&sformat_mask, sformat) && 894 + if ((__force int)sformat < 0 || 895 + !snd_mask_test(&sformat_mask, (__force int)sformat)) { 896 + for (sformat = (__force snd_pcm_format_t)0; 897 + (__force int)sformat <= (__force int)SNDRV_PCM_FORMAT_LAST; 898 + sformat = (__force snd_pcm_format_t)((__force int)sformat + 1)) { 899 + if (snd_mask_test(&sformat_mask, (__force int)sformat) && 898 900 snd_pcm_oss_format_to(sformat) >= 0) 899 901 break; 900 902 } 901 - if (sformat > SNDRV_PCM_FORMAT_LAST) { 903 + if ((__force int)sformat > (__force int)SNDRV_PCM_FORMAT_LAST) { 902 904 snd_printd("Cannot find a format!!!\n"); 903 905 err = -EINVAL; 904 906 goto failure; 905 907 } 906 908 } 907 - err = _snd_pcm_hw_param_set(sparams, SNDRV_PCM_HW_PARAM_FORMAT, sformat, 0); 909 + err = _snd_pcm_hw_param_set(sparams, SNDRV_PCM_HW_PARAM_FORMAT, (__force int)sformat, 0); 908 910 if (err < 0) 909 911 goto failure; 910 912 ··· 916 912 } else { 917 913 _snd_pcm_hw_params_any(params); 918 914 _snd_pcm_hw_param_set(params, SNDRV_PCM_HW_PARAM_ACCESS, 919 - SNDRV_PCM_ACCESS_RW_INTERLEAVED, 0); 915 + (__force int)SNDRV_PCM_ACCESS_RW_INTERLEAVED, 0); 920 916 _snd_pcm_hw_param_set(params, SNDRV_PCM_HW_PARAM_FORMAT, 921 - snd_pcm_oss_format_from(runtime->oss.format), 0); 917 + (__force int)snd_pcm_oss_format_from(runtime->oss.format), 0); 922 918 _snd_pcm_hw_param_set(params, SNDRV_PCM_HW_PARAM_CHANNELS, 923 919 runtime->oss.channels, 0); 924 920 _snd_pcm_hw_param_set(params, SNDRV_PCM_HW_PARAM_RATE, ··· 1189 1185 if (in_kernel) { 1190 1186 mm_segment_t fs; 1191 1187 fs = snd_enter_user(); 1192 - ret = snd_pcm_lib_write(substream, (void __user *)ptr, frames); 1188 + ret = snd_pcm_lib_write(substream, (void __force __user *)ptr, frames); 1193 1189 snd_leave_user(fs); 1194 1190 } else { 1195 - ret = snd_pcm_lib_write(substream, (void __user *)ptr, frames); 1191 + ret = snd_pcm_lib_write(substream, (void __force __user *)ptr, frames); 1196 1192 } 1197 1193 if (ret != -EPIPE && ret != -ESTRPIPE) 1198 1194 break; ··· 1234 1230 if (in_kernel) { 1235 1231 mm_segment_t fs; 1236 1232 fs = snd_enter_user(); 1237 - ret = snd_pcm_lib_read(substream, (void __user *)ptr, frames); 1233 + ret = snd_pcm_lib_read(substream, (void __force __user *)ptr, frames); 1238 1234 snd_leave_user(fs); 1239 1235 } else { 1240 - ret = snd_pcm_lib_read(substream, (void __user *)ptr, frames); 1236 + ret = snd_pcm_lib_read(substream, (void __force __user *)ptr, frames); 1241 1237 } 1242 1238 if (ret == -EPIPE) { 1243 1239 if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) { ··· 1337 1333 struct snd_pcm_plugin_channel *channels; 1338 1334 size_t oss_frame_bytes = (runtime->oss.plugin_first->src_width * runtime->oss.plugin_first->src_format.channels) / 8; 1339 1335 if (!in_kernel) { 1340 - if (copy_from_user(runtime->oss.buffer, (const char __user *)buf, bytes)) 1336 + if (copy_from_user(runtime->oss.buffer, (const char __force __user *)buf, bytes)) 1341 1337 return -EFAULT; 1342 1338 buf = runtime->oss.buffer; 1343 1339 } ··· 1433 1429 struct snd_pcm_runtime *runtime = substream->runtime; 1434 1430 snd_pcm_sframes_t frames, frames1; 1435 1431 #ifdef CONFIG_SND_PCM_OSS_PLUGINS 1436 - char __user *final_dst = (char __user *)buf; 1432 + char __user *final_dst = (char __force __user *)buf; 1437 1433 if (runtime->oss.plugin_first) { 1438 1434 struct snd_pcm_plugin_channel *channels; 1439 1435 size_t oss_frame_bytes = (runtime->oss.plugin_last->dst_width * runtime->oss.plugin_last->dst_format.channels) / 8; ··· 1553 1549 { 1554 1550 struct snd_pcm_runtime *runtime; 1555 1551 ssize_t result = 0; 1552 + snd_pcm_state_t state; 1556 1553 long res; 1557 1554 wait_queue_t wait; 1558 1555 ··· 1575 1570 result = 0; 1576 1571 set_current_state(TASK_INTERRUPTIBLE); 1577 1572 snd_pcm_stream_lock_irq(substream); 1578 - res = runtime->status->state; 1573 + state = runtime->status->state; 1579 1574 snd_pcm_stream_unlock_irq(substream); 1580 - if (res != SNDRV_PCM_STATE_RUNNING) { 1575 + if (state != SNDRV_PCM_STATE_RUNNING) { 1581 1576 set_current_state(TASK_RUNNING); 1582 1577 break; 1583 1578 } ··· 1663 1658 size1); 1664 1659 size1 /= runtime->channels; /* frames */ 1665 1660 fs = snd_enter_user(); 1666 - snd_pcm_lib_write(substream, (void __user *)runtime->oss.buffer, size1); 1661 + snd_pcm_lib_write(substream, (void __force __user *)runtime->oss.buffer, size1); 1667 1662 snd_leave_user(fs); 1668 1663 } 1669 1664 } else if (runtime->access == SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) {
+22 -18
sound/core/oss/pcm_plugin.c
··· 264 264 return frames; 265 265 } 266 266 267 - static int snd_pcm_plug_formats(struct snd_mask *mask, int format) 267 + static int snd_pcm_plug_formats(struct snd_mask *mask, snd_pcm_format_t format) 268 268 { 269 269 struct snd_mask formats = *mask; 270 270 u64 linfmts = (SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S8 | ··· 276 276 SNDRV_PCM_FMTBIT_U24_3BE | SNDRV_PCM_FMTBIT_S24_3BE | 277 277 SNDRV_PCM_FMTBIT_U32_LE | SNDRV_PCM_FMTBIT_S32_LE | 278 278 SNDRV_PCM_FMTBIT_U32_BE | SNDRV_PCM_FMTBIT_S32_BE); 279 - snd_mask_set(&formats, SNDRV_PCM_FORMAT_MU_LAW); 279 + snd_mask_set(&formats, (__force int)SNDRV_PCM_FORMAT_MU_LAW); 280 280 281 281 if (formats.bits[0] & (u32)linfmts) 282 282 formats.bits[0] |= (u32)linfmts; 283 283 if (formats.bits[1] & (u32)(linfmts >> 32)) 284 284 formats.bits[1] |= (u32)(linfmts >> 32); 285 - return snd_mask_test(&formats, format); 285 + return snd_mask_test(&formats, (__force int)format); 286 286 } 287 287 288 - static int preferred_formats[] = { 288 + static snd_pcm_format_t preferred_formats[] = { 289 289 SNDRV_PCM_FORMAT_S16_LE, 290 290 SNDRV_PCM_FORMAT_S16_BE, 291 291 SNDRV_PCM_FORMAT_U16_LE, ··· 306 306 SNDRV_PCM_FORMAT_U8 307 307 }; 308 308 309 - int snd_pcm_plug_slave_format(int format, struct snd_mask *format_mask) 309 + snd_pcm_format_t snd_pcm_plug_slave_format(snd_pcm_format_t format, 310 + struct snd_mask *format_mask) 310 311 { 311 312 int i; 312 313 313 - if (snd_mask_test(format_mask, format)) 314 + if (snd_mask_test(format_mask, (__force int)format)) 314 315 return format; 315 - if (! snd_pcm_plug_formats(format_mask, format)) 316 - return -EINVAL; 316 + if (!snd_pcm_plug_formats(format_mask, format)) 317 + return (__force snd_pcm_format_t)-EINVAL; 317 318 if (snd_pcm_format_linear(format)) { 318 319 unsigned int width = snd_pcm_format_width(format); 319 320 int unsignd = snd_pcm_format_unsigned(format) > 0; 320 321 int big = snd_pcm_format_big_endian(format) > 0; 321 322 unsigned int badness, best = -1; 322 - int best_format = -1; 323 + snd_pcm_format_t best_format = (__force snd_pcm_format_t)-1; 323 324 for (i = 0; i < ARRAY_SIZE(preferred_formats); i++) { 324 - int f = preferred_formats[i]; 325 + snd_pcm_format_t f = preferred_formats[i]; 325 326 unsigned int w; 326 - if (!snd_mask_test(format_mask, f)) 327 + if (!snd_mask_test(format_mask, (__force int)f)) 327 328 continue; 328 329 w = snd_pcm_format_width(f); 329 330 if (w >= width) ··· 338 337 best = badness; 339 338 } 340 339 } 341 - return best_format >= 0 ? best_format : -EINVAL; 340 + if ((__force int)best_format >= 0) 341 + return best_format; 342 + else 343 + return (__force snd_pcm_format_t)-EINVAL; 342 344 } else { 343 345 switch (format) { 344 346 case SNDRV_PCM_FORMAT_MU_LAW: 345 347 for (i = 0; i < ARRAY_SIZE(preferred_formats); ++i) { 346 - int format1 = preferred_formats[i]; 347 - if (snd_mask_test(format_mask, format1)) 348 + snd_pcm_format_t format1 = preferred_formats[i]; 349 + if (snd_mask_test(format_mask, (__force int)format1)) 348 350 return format1; 349 351 } 350 352 default: 351 - return -EINVAL; 353 + return (__force snd_pcm_format_t)-EINVAL; 352 354 } 353 355 } 354 356 } ··· 363 359 struct snd_pcm_plugin_format tmpformat; 364 360 struct snd_pcm_plugin_format dstformat; 365 361 struct snd_pcm_plugin_format srcformat; 366 - int src_access, dst_access; 362 + snd_pcm_access_t src_access, dst_access; 367 363 struct snd_pcm_plugin *plugin = NULL; 368 364 int err; 369 365 int stream = snd_pcm_plug_stream(plug); ··· 645 641 } 646 642 647 643 int snd_pcm_area_silence(const struct snd_pcm_channel_area *dst_area, size_t dst_offset, 648 - size_t samples, int format) 644 + size_t samples, snd_pcm_format_t format) 649 645 { 650 646 /* FIXME: sub byte resolution and odd dst_offset */ 651 647 unsigned char *dst; ··· 692 688 693 689 int snd_pcm_area_copy(const struct snd_pcm_channel_area *src_area, size_t src_offset, 694 690 const struct snd_pcm_channel_area *dst_area, size_t dst_offset, 695 - size_t samples, int format) 691 + size_t samples, snd_pcm_format_t format) 696 692 { 697 693 /* FIXME: sub byte resolution and odd dst_offset */ 698 694 char *src, *dst;
+6 -5
sound/core/oss/pcm_plugin.h
··· 46 46 }; 47 47 48 48 struct snd_pcm_plugin_format { 49 - int format; 49 + snd_pcm_format_t format; 50 50 unsigned int rate; 51 51 unsigned int channels; 52 52 }; ··· 58 58 struct snd_pcm_plugin_format dst_format; /* destination format */ 59 59 int src_width; /* sample width in bits */ 60 60 int dst_width; /* sample width in bits */ 61 - int access; 61 + snd_pcm_access_t access; 62 62 snd_pcm_sframes_t (*src_frames)(struct snd_pcm_plugin *plugin, snd_pcm_uframes_t dst_frames); 63 63 snd_pcm_sframes_t (*dst_frames)(struct snd_pcm_plugin *plugin, snd_pcm_uframes_t src_frames); 64 64 snd_pcm_sframes_t (*client_channels)(struct snd_pcm_plugin *plugin, ··· 125 125 struct snd_pcm_hw_params *params, 126 126 struct snd_pcm_hw_params *slave_params); 127 127 128 - int snd_pcm_plug_slave_format(int format, struct snd_mask *format_mask); 128 + snd_pcm_format_t snd_pcm_plug_slave_format(snd_pcm_format_t format, 129 + struct snd_mask *format_mask); 129 130 130 131 int snd_pcm_plugin_append(struct snd_pcm_plugin *plugin); 131 132 ··· 147 146 148 147 int snd_pcm_area_silence(const struct snd_pcm_channel_area *dst_channel, 149 148 size_t dst_offset, 150 - size_t samples, int format); 149 + size_t samples, snd_pcm_format_t format); 151 150 int snd_pcm_area_copy(const struct snd_pcm_channel_area *src_channel, 152 151 size_t src_offset, 153 152 const struct snd_pcm_channel_area *dst_channel, 154 153 size_t dst_offset, 155 - size_t samples, int format); 154 + size_t samples, snd_pcm_format_t format); 156 155 157 156 void *snd_pcm_plug_buf_alloc(struct snd_pcm_substream *plug, snd_pcm_uframes_t size); 158 157 void snd_pcm_plug_buf_unlock(struct snd_pcm_substream *plug, void *ptr);
+3 -3
sound/core/oss/route.c
··· 25 25 #include "pcm_plugin.h" 26 26 27 27 static void zero_areas(struct snd_pcm_plugin_channel *dvp, int ndsts, 28 - snd_pcm_uframes_t frames, int format) 28 + snd_pcm_uframes_t frames, snd_pcm_format_t format) 29 29 { 30 30 int dst = 0; 31 31 for (; dst < ndsts; ++dst) { ··· 38 38 39 39 static inline void copy_area(const struct snd_pcm_plugin_channel *src_channel, 40 40 struct snd_pcm_plugin_channel *dst_channel, 41 - snd_pcm_uframes_t frames, int format) 41 + snd_pcm_uframes_t frames, snd_pcm_format_t format) 42 42 { 43 43 dst_channel->enabled = 1; 44 44 snd_pcm_area_copy(&src_channel->area, 0, &dst_channel->area, 0, frames, format); ··· 51 51 { 52 52 int nsrcs, ndsts, dst; 53 53 struct snd_pcm_plugin_channel *dvp; 54 - int format; 54 + snd_pcm_format_t format; 55 55 56 56 if (snd_BUG_ON(!plugin || !src_channels || !dst_channels)) 57 57 return -ENXIO;
+5 -5
sound/core/pcm.c
··· 211 211 212 212 const char *snd_pcm_format_name(snd_pcm_format_t format) 213 213 { 214 - if (format >= ARRAY_SIZE(snd_pcm_format_names)) 214 + if ((__force unsigned int)format >= ARRAY_SIZE(snd_pcm_format_names)) 215 215 return "Unknown"; 216 - return snd_pcm_format_names[format]; 216 + return snd_pcm_format_names[(__force unsigned int)format]; 217 217 } 218 218 EXPORT_SYMBOL_GPL(snd_pcm_format_name); 219 219 ··· 269 269 270 270 static const char *snd_pcm_access_name(snd_pcm_access_t access) 271 271 { 272 - return snd_pcm_access_names[access]; 272 + return snd_pcm_access_names[(__force int)access]; 273 273 } 274 274 275 275 static const char *snd_pcm_subformat_name(snd_pcm_subformat_t subformat) 276 276 { 277 - return snd_pcm_subformat_names[subformat]; 277 + return snd_pcm_subformat_names[(__force int)subformat]; 278 278 } 279 279 280 280 static const char *snd_pcm_tstamp_mode_name(int mode) ··· 284 284 285 285 static const char *snd_pcm_state_name(snd_pcm_state_t state) 286 286 { 287 - return snd_pcm_state_names[state]; 287 + return snd_pcm_state_names[(__force int)state]; 288 288 } 289 289 290 290 #if defined(CONFIG_SND_PCM_OSS) || defined(CONFIG_SND_PCM_OSS_MODULE)
+19 -16
sound/core/pcm_misc.c
··· 35 35 unsigned char silence[8]; /* silence data to fill */ 36 36 }; 37 37 38 - static struct pcm_format_data pcm_formats[SNDRV_PCM_FORMAT_LAST+1] = { 38 + /* we do lots of calculations on snd_pcm_format_t; shut up sparse */ 39 + #define INT __force int 40 + 41 + static struct pcm_format_data pcm_formats[(INT)SNDRV_PCM_FORMAT_LAST+1] = { 39 42 [SNDRV_PCM_FORMAT_S8] = { 40 43 .width = 8, .phys = 8, .le = -1, .signd = 1, 41 44 .silence = {}, ··· 218 215 int snd_pcm_format_signed(snd_pcm_format_t format) 219 216 { 220 217 int val; 221 - if (format < 0 || format > SNDRV_PCM_FORMAT_LAST) 218 + if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) 222 219 return -EINVAL; 223 - if ((val = pcm_formats[format].signd) < 0) 220 + if ((val = pcm_formats[(INT)format].signd) < 0) 224 221 return -EINVAL; 225 222 return val; 226 223 } ··· 269 266 int snd_pcm_format_little_endian(snd_pcm_format_t format) 270 267 { 271 268 int val; 272 - if (format < 0 || format > SNDRV_PCM_FORMAT_LAST) 269 + if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) 273 270 return -EINVAL; 274 - if ((val = pcm_formats[format].le) < 0) 271 + if ((val = pcm_formats[(INT)format].le) < 0) 275 272 return -EINVAL; 276 273 return val; 277 274 } ··· 307 304 int snd_pcm_format_width(snd_pcm_format_t format) 308 305 { 309 306 int val; 310 - if (format < 0 || format > SNDRV_PCM_FORMAT_LAST) 307 + if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) 311 308 return -EINVAL; 312 - if ((val = pcm_formats[format].width) == 0) 309 + if ((val = pcm_formats[(INT)format].width) == 0) 313 310 return -EINVAL; 314 311 return val; 315 312 } ··· 326 323 int snd_pcm_format_physical_width(snd_pcm_format_t format) 327 324 { 328 325 int val; 329 - if (format < 0 || format > SNDRV_PCM_FORMAT_LAST) 326 + if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) 330 327 return -EINVAL; 331 - if ((val = pcm_formats[format].phys) == 0) 328 + if ((val = pcm_formats[(INT)format].phys) == 0) 332 329 return -EINVAL; 333 330 return val; 334 331 } ··· 361 358 */ 362 359 const unsigned char *snd_pcm_format_silence_64(snd_pcm_format_t format) 363 360 { 364 - if (format < 0 || format > SNDRV_PCM_FORMAT_LAST) 361 + if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) 365 362 return NULL; 366 - if (! pcm_formats[format].phys) 363 + if (! pcm_formats[(INT)format].phys) 367 364 return NULL; 368 - return pcm_formats[format].silence; 365 + return pcm_formats[(INT)format].silence; 369 366 } 370 367 371 368 EXPORT_SYMBOL(snd_pcm_format_silence_64); ··· 385 382 int width; 386 383 unsigned char *dst, *pat; 387 384 388 - if (format < 0 || format > SNDRV_PCM_FORMAT_LAST) 385 + if ((INT)format < 0 || (INT)format > (INT)SNDRV_PCM_FORMAT_LAST) 389 386 return -EINVAL; 390 387 if (samples == 0) 391 388 return 0; 392 - width = pcm_formats[format].phys; /* physical width */ 393 - pat = pcm_formats[format].silence; 389 + width = pcm_formats[(INT)format].phys; /* physical width */ 390 + pat = pcm_formats[(INT)format].silence; 394 391 if (! width) 395 392 return -EINVAL; 396 393 /* signed or 1 byte data */ 397 - if (pcm_formats[format].signd == 1 || width <= 8) { 394 + if (pcm_formats[(INT)format].signd == 1 || width <= 8) { 398 395 unsigned int bytes = samples * width / 8; 399 396 memset(data, *pat, bytes); 400 397 return 0;
+1 -1
sound/core/pcm_native.c
··· 941 941 * 942 942 * The state of each stream is then changed to the given state unconditionally. 943 943 */ 944 - int snd_pcm_stop(struct snd_pcm_substream *substream, int state) 944 + int snd_pcm_stop(struct snd_pcm_substream *substream, snd_pcm_state_t state) 945 945 { 946 946 return snd_pcm_action(&snd_pcm_action_stop, substream, state); 947 947 }
+2 -5
sound/core/seq/seq_clientmgr.c
··· 1052 1052 } else { 1053 1053 #ifdef CONFIG_COMPAT 1054 1054 if (client->convert32 && snd_seq_ev_is_varusr(&event)) { 1055 - void *ptr = compat_ptr(event.data.raw32.d[1]); 1055 + void *ptr = (void __force *)compat_ptr(event.data.raw32.d[1]); 1056 1056 event.data.ext.ptr = ptr; 1057 1057 } 1058 1058 #endif ··· 2407 2407 if (client == NULL) 2408 2408 return -ENXIO; 2409 2409 fs = snd_enter_user(); 2410 - result = snd_seq_do_ioctl(client, cmd, (void __user *)arg); 2410 + result = snd_seq_do_ioctl(client, cmd, (void __force __user *)arg); 2411 2411 snd_leave_user(fs); 2412 2412 return result; 2413 2413 } ··· 2496 2496 mutex_unlock(&client->ports_mutex); 2497 2497 } 2498 2498 2499 - 2500 - void snd_seq_info_pool(struct snd_info_buffer *buffer, 2501 - struct snd_seq_pool *pool, char *space); 2502 2499 2503 2500 /* exported to seq_info.c */ 2504 2501 void snd_seq_info_clients_read(struct snd_info_entry *entry,
+3 -3
sound/core/seq/seq_memory.c
··· 86 86 87 87 if (event->data.ext.len & SNDRV_SEQ_EXT_USRPTR) { 88 88 char buf[32]; 89 - char __user *curptr = (char __user *)event->data.ext.ptr; 89 + char __user *curptr = (char __force __user *)event->data.ext.ptr; 90 90 while (len > 0) { 91 91 int size = sizeof(buf); 92 92 if (len < size) ··· 157 157 if (event->data.ext.len & SNDRV_SEQ_EXT_USRPTR) { 158 158 if (! in_kernel) 159 159 return -EINVAL; 160 - if (copy_from_user(buf, (void __user *)event->data.ext.ptr, len)) 160 + if (copy_from_user(buf, (void __force __user *)event->data.ext.ptr, len)) 161 161 return -EFAULT; 162 162 return newlen; 163 163 } ··· 343 343 tmp->event = src->event; 344 344 src = src->next; 345 345 } else if (is_usrptr) { 346 - if (copy_from_user(&tmp->event, (char __user *)buf, size)) { 346 + if (copy_from_user(&tmp->event, (char __force __user *)buf, size)) { 347 347 err = -EFAULT; 348 348 goto __error; 349 349 }
+4
sound/core/seq/seq_memory.h
··· 24 24 #include <sound/seq_kernel.h> 25 25 #include <linux/poll.h> 26 26 27 + struct snd_info_buffer; 28 + 27 29 /* container for sequencer event (internal use) */ 28 30 struct snd_seq_event_cell { 29 31 struct snd_seq_event event; ··· 101 99 /* polling */ 102 100 int snd_seq_pool_poll_wait(struct snd_seq_pool *pool, struct file *file, poll_table *wait); 103 101 102 + void snd_seq_info_pool(struct snd_info_buffer *buffer, 103 + struct snd_seq_pool *pool, char *space); 104 104 105 105 #endif
+1 -1
sound/core/vmaster.c
··· 18 18 * a subset of information returned via ctl info callback 19 19 */ 20 20 struct link_ctl_info { 21 - int type; /* value type */ 21 + snd_ctl_elem_type_t type; /* value type */ 22 22 int count; /* item count */ 23 23 int min_val, max_val; /* min, max values */ 24 24 };