Index: lib/msan/lit_tests/ioctl_sound.cc =================================================================== --- /dev/null +++ lib/msan/lit_tests/ioctl_sound.cc @@ -0,0 +1,26 @@ +// RUN: %clangxx_msan -m64 -O0 -g %s -o %t && %t +// RUN: %clangxx_msan -m64 -O3 -g %s -o %t && %t + +#include +#include +#include +#include +#include +#include +#include + +#include + +int main(int argc, char **argv) { + int fd = open("/dev/snd/controlC0", O_RDONLY); + if (fd < 0) { + printf("Unable to open sound device."); + return 0; + } + snd_ctl_card_info info; + assert(__msan_test_shadow(&info, sizeof(info)) != -1); + assert(ioctl(fd, SNDRV_CTL_IOCTL_CARD_INFO, &info) >= 0); + assert(__msan_test_shadow(&info, sizeof(info)) == -1); + close(fd); + return 0; +} Index: lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc =================================================================== --- lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +++ lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc @@ -14,14 +14,18 @@ struct ioctl_desc { unsigned req; - // FIXME: support read+write arguments. Those are currently marked as WRITE. + // FIXME: support read+write arguments. Currently READWRITE and WRITE do the + // same thing. + // XXX: The declarations below may use WRITE instead of READWRITE, unless + // explicitly noted. enum { NONE, READ, WRITE, + READWRITE, CUSTOM - } type : 2; - unsigned size : 30; + } type : 3; + unsigned size : 29; const char* name; }; @@ -352,6 +356,129 @@ _(VT_SENDSIG, NONE, 0); _(VT_SETMODE, READ, struct_vt_mode_sz); _(VT_WAITACTIVE, NONE, 0); + + // . READWRITE is used correctly in this group. + _(SNDRV_HWDEP_IOCTL_PVERSION, WRITE, sizeof(int)) + _(SNDRV_HWDEP_IOCTL_INFO, WRITE, struct_snd_hwdep_info_sz) + _(SNDRV_HWDEP_IOCTL_DSP_STATUS, WRITE, struct_snd_hwdep_dsp_status_sz) + _(SNDRV_HWDEP_IOCTL_DSP_LOAD, READ, struct_snd_hwdep_dsp_image_sz) + _(SNDRV_PCM_IOCTL_PVERSION, WRITE, sizeof(int)) + _(SNDRV_PCM_IOCTL_INFO, WRITE, struct_snd_pcm_info_sz) + _(SNDRV_PCM_IOCTL_TSTAMP, READ, sizeof(int)) + _(SNDRV_PCM_IOCTL_TTSTAMP, READ, sizeof(int)) + _(SNDRV_PCM_IOCTL_HW_REFINE, READWRITE, struct_snd_pcm_hw_params_sz) + _(SNDRV_PCM_IOCTL_HW_PARAMS, READWRITE, struct_snd_pcm_hw_params_sz) + _(SNDRV_PCM_IOCTL_HW_FREE, NONE, 0) + _(SNDRV_PCM_IOCTL_SW_PARAMS, READWRITE, struct_snd_pcm_sw_params_sz) + _(SNDRV_PCM_IOCTL_STATUS, WRITE, struct_snd_pcm_status_sz) + _(SNDRV_PCM_IOCTL_DELAY, WRITE, snd_pcm_sframes_t_sz) + _(SNDRV_PCM_IOCTL_HWSYNC, NONE, 0) + _(SNDRV_PCM_IOCTL_SYNC_PTR, READWRITE, struct_snd_pcm_sync_ptr_sz) + _(SNDRV_PCM_IOCTL_CHANNEL_INFO, WRITE, struct_snd_pcm_channel_info_sz) + _(SNDRV_PCM_IOCTL_PREPARE, NONE, 0) + _(SNDRV_PCM_IOCTL_RESET, NONE, 0) + _(SNDRV_PCM_IOCTL_START, NONE, 0) + _(SNDRV_PCM_IOCTL_DROP, NONE, 0) + _(SNDRV_PCM_IOCTL_DRAIN, NONE, 0) + _(SNDRV_PCM_IOCTL_PAUSE, READ, sizeof(int)) + _(SNDRV_PCM_IOCTL_REWIND, READ, snd_pcm_uframes_t_sz) + _(SNDRV_PCM_IOCTL_RESUME, NONE, 0) + _(SNDRV_PCM_IOCTL_XRUN, NONE, 0) + _(SNDRV_PCM_IOCTL_FORWARD, READ, snd_pcm_uframes_t_sz) + _(SNDRV_PCM_IOCTL_WRITEI_FRAMES, READ, struct_snd_xferi_sz) + _(SNDRV_PCM_IOCTL_READI_FRAMES, WRITE, struct_snd_xferi_sz) + _(SNDRV_PCM_IOCTL_WRITEN_FRAMES, READ, struct_snd_xfern_sz) + _(SNDRV_PCM_IOCTL_READN_FRAMES, WRITE, struct_snd_xfern_sz) + _(SNDRV_PCM_IOCTL_LINK, READ, sizeof(int)) + _(SNDRV_PCM_IOCTL_UNLINK, NONE, 0) + _(SNDRV_RAWMIDI_IOCTL_PVERSION, WRITE, sizeof(int)) + _(SNDRV_RAWMIDI_IOCTL_INFO, WRITE, struct_snd_rawmidi_info_sz) + _(SNDRV_RAWMIDI_IOCTL_PARAMS, READWRITE, struct_snd_rawmidi_params_sz) + _(SNDRV_RAWMIDI_IOCTL_STATUS, READWRITE, struct_snd_rawmidi_status_sz) + _(SNDRV_RAWMIDI_IOCTL_DROP, READ, sizeof(int)) + _(SNDRV_RAWMIDI_IOCTL_DRAIN, READ, sizeof(int)) + _(SNDRV_TIMER_IOCTL_PVERSION, WRITE, sizeof(int)) + _(SNDRV_TIMER_IOCTL_NEXT_DEVICE, READWRITE, struct_snd_timer_id_sz) + _(SNDRV_TIMER_IOCTL_TREAD, READ, sizeof(int)) + _(SNDRV_TIMER_IOCTL_GINFO, READWRITE, struct_snd_timer_ginfo_sz) + _(SNDRV_TIMER_IOCTL_GPARAMS, READ, struct_snd_timer_gparams_sz) + _(SNDRV_TIMER_IOCTL_GSTATUS, READWRITE, struct_snd_timer_gstatus_sz) + _(SNDRV_TIMER_IOCTL_SELECT, READ, struct_snd_timer_select_sz) + _(SNDRV_TIMER_IOCTL_INFO, WRITE, struct_snd_timer_info_sz) + _(SNDRV_TIMER_IOCTL_PARAMS, READ, struct_snd_timer_params_sz) + _(SNDRV_TIMER_IOCTL_STATUS, WRITE, struct_snd_timer_status_sz) + _(SNDRV_TIMER_IOCTL_START, NONE, 0) + _(SNDRV_TIMER_IOCTL_STOP, NONE, 0) + _(SNDRV_TIMER_IOCTL_CONTINUE, NONE, 0) + _(SNDRV_TIMER_IOCTL_PAUSE, NONE, 0) + _(SNDRV_CTL_IOCTL_PVERSION, WRITE, sizeof(int)) + _(SNDRV_CTL_IOCTL_CARD_INFO, WRITE, struct_snd_ctl_card_info_sz) + _(SNDRV_CTL_IOCTL_ELEM_LIST, READWRITE, struct_snd_ctl_elem_list_sz) + _(SNDRV_CTL_IOCTL_ELEM_INFO, READWRITE, struct_snd_ctl_elem_info_sz) + _(SNDRV_CTL_IOCTL_ELEM_READ, READWRITE, struct_snd_ctl_elem_value_sz) + _(SNDRV_CTL_IOCTL_ELEM_WRITE, READWRITE, struct_snd_ctl_elem_value_sz) + _(SNDRV_CTL_IOCTL_ELEM_LOCK, READ, struct_snd_ctl_elem_id_sz) + _(SNDRV_CTL_IOCTL_ELEM_UNLOCK, READ, struct_snd_ctl_elem_id_sz) + _(SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS, READWRITE, sizeof(int)) + _(SNDRV_CTL_IOCTL_ELEM_ADD, READWRITE, struct_snd_ctl_elem_info_sz) + _(SNDRV_CTL_IOCTL_ELEM_REPLACE, READWRITE, struct_snd_ctl_elem_info_sz) + _(SNDRV_CTL_IOCTL_ELEM_REMOVE, READWRITE, struct_snd_ctl_elem_id_sz) + _(SNDRV_CTL_IOCTL_TLV_READ, READWRITE, struct_snd_ctl_tlv_sz) + _(SNDRV_CTL_IOCTL_TLV_WRITE, READWRITE, struct_snd_ctl_tlv_sz) + _(SNDRV_CTL_IOCTL_TLV_COMMAND, READWRITE, struct_snd_ctl_tlv_sz) + _(SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE, READWRITE, sizeof(int)) + _(SNDRV_CTL_IOCTL_HWDEP_INFO, WRITE, struct_snd_hwdep_info_sz) + _(SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE, WRITE, sizeof(int)) + _(SNDRV_CTL_IOCTL_PCM_INFO, READWRITE, struct_snd_pcm_info_sz) + _(SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE, READ, sizeof(int)) + _(SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE, READWRITE, sizeof(int)) + _(SNDRV_CTL_IOCTL_RAWMIDI_INFO, READWRITE, struct_snd_rawmidi_info_sz) + _(SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE, READ, sizeof(int)) + _(SNDRV_CTL_IOCTL_POWER, READWRITE, sizeof(int)) + _(SNDRV_CTL_IOCTL_POWER_STATE, WRITE, sizeof(int)) + + // . READWRITE is used correctly in this group. + _(SNDRV_DM_FM_IOCTL_INFO, WRITE, struct_snd_dm_fm_info_sz) + _(SNDRV_DM_FM_IOCTL_RESET, NONE, 0) + _(SNDRV_DM_FM_IOCTL_PLAY_NOTE, READ, struct_snd_dm_fm_note_sz) + _(SNDRV_DM_FM_IOCTL_SET_VOICE, READ, struct_snd_dm_fm_voice_sz) + _(SNDRV_DM_FM_IOCTL_SET_PARAMS, READ, struct_snd_dm_fm_params_sz) + _(SNDRV_DM_FM_IOCTL_SET_MODE, READ, sizeof(int)) + _(SNDRV_DM_FM_IOCTL_SET_CONNECTION, READ, sizeof(int)) + _(SNDRV_DM_FM_IOCTL_CLEAR_PATCHES, NONE, 0) + + // . READWRITE is used correctly in this group. + _(SNDRV_HDSP_IOCTL_GET_PEAK_RMS, WRITE, struct_hdsp_peak_rms_sz) + _(SNDRV_HDSP_IOCTL_GET_CONFIG_INFO, WRITE, struct_hdsp_config_info_sz) + _(SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE, READ, struct_hdsp_firmware_sz) + _(SNDRV_HDSP_IOCTL_GET_VERSION, WRITE, struct_hdsp_version_sz) + _(SNDRV_HDSP_IOCTL_GET_MIXER, WRITE, struct_hdsp_mixer_sz) + _(SNDRV_HDSP_IOCTL_GET_9632_AEB, WRITE, struct_hdsp_9632_aeb_sz) + + // . READWRITE is used correctly in this group. + _(SNDRV_HDSPM_IOCTL_GET_PEAK_RMS, WRITE, struct_hdspm_peak_rms_sz) + _(SNDRV_HDSPM_IOCTL_GET_CONFIG, WRITE, struct_hdspm_config_sz) + _(SNDRV_HDSPM_IOCTL_GET_LTC, WRITE, struct_hdspm_mixer_ioctl_sz) + _(SNDRV_HDSPM_IOCTL_GET_STATUS, WRITE, struct_hdspm_status_sz) + _(SNDRV_HDSPM_IOCTL_GET_VERSION, WRITE, struct_hdspm_version_sz) + _(SNDRV_HDSPM_IOCTL_GET_MIXER, WRITE, struct_hdspm_mixer_ioctl_sz) + + // . READWRITE is used correctly in this group. + _(SNDRV_SB_CSP_IOCTL_INFO, WRITE, struct_snd_sb_csp_info_sz) + _(SNDRV_SB_CSP_IOCTL_LOAD_CODE, READ, struct_snd_sb_csp_microcode_sz) + _(SNDRV_SB_CSP_IOCTL_UNLOAD_CODE, NONE, 0) + _(SNDRV_SB_CSP_IOCTL_START, READ, struct_snd_sb_csp_start_sz) + _(SNDRV_SB_CSP_IOCTL_STOP, NONE, 0) + _(SNDRV_SB_CSP_IOCTL_PAUSE, NONE, 0) + _(SNDRV_SB_CSP_IOCTL_RESTART, NONE, 0) + + // . READWRITE is used correctly in this group. + _(SNDRV_EMUX_IOCTL_VERSION, WRITE, sizeof(unsigned int)) + _(SNDRV_EMUX_IOCTL_LOAD_PATCH, READWRITE, struct_soundfont_patch_info_sz) + _(SNDRV_EMUX_IOCTL_RESET_SAMPLES, NONE, 0) + _(SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES, NONE, 0) + _(SNDRV_EMUX_IOCTL_MEM_AVAIL, READ, sizeof(int)) + _(SNDRV_EMUX_IOCTL_MISC_MODE, READWRITE, struct_snd_emux_misc_mode_sz) #endif #if SANITIZER_LINUX && !SANITIZER_ANDROID @@ -525,14 +652,15 @@ // Sanity check: requests that encode access size are either read or write and // have size of 0 in the table. if (desc && desc->size == 0 && - (desc->type == ioctl_desc::WRITE || desc->type == ioctl_desc::READ)) + (desc->type == ioctl_desc::READWRITE || desc->type == ioctl_desc::WRITE || + desc->type == ioctl_desc::READ)) return desc; return 0; } static void ioctl_common_pre(void *ctx, const ioctl_desc *desc, int d, unsigned request, void *arg) { - if (desc->type == ioctl_desc::READ) { + if (desc->type == ioctl_desc::READ || desc->type == ioctl_desc::READWRITE) { unsigned size = desc->size ? desc->size : IOC_SIZE(request); COMMON_INTERCEPTOR_READ_RANGE(ctx, arg, size); } @@ -550,7 +678,7 @@ static void ioctl_common_post(void *ctx, const ioctl_desc *desc, int res, int d, unsigned request, void *arg) { - if (desc->type == ioctl_desc::WRITE) { + if (desc->type == ioctl_desc::WRITE || desc->type == ioctl_desc::READWRITE) { // FIXME: add verbose output unsigned size = desc->size ? desc->size : IOC_SIZE(request); COMMON_INTERCEPTOR_WRITE_RANGE(ctx, arg, size); Index: lib/sanitizer_common/sanitizer_platform_limits_posix.h =================================================================== --- lib/sanitizer_common/sanitizer_platform_limits_posix.h +++ lib/sanitizer_common/sanitizer_platform_limits_posix.h @@ -589,6 +589,59 @@ extern unsigned struct_sioc_vif_req_sz; #endif +#if SANITIZER_LINUX + extern unsigned snd_pcm_sframes_t_sz; + extern unsigned snd_pcm_uframes_t_sz; + extern unsigned struct_hdsp_9632_aeb_sz; + extern unsigned struct_hdsp_config_info_sz; + extern unsigned struct_hdsp_firmware_sz; + extern unsigned struct_hdspm_config_sz; + extern unsigned struct_hdsp_mixer_sz; + extern unsigned struct_hdspm_mixer_ioctl_sz; + extern unsigned struct_hdspm_peak_rms_sz; + extern unsigned struct_hdspm_status_sz; + extern unsigned struct_hdspm_version_sz; + extern unsigned struct_hdsp_peak_rms_sz; + extern unsigned struct_hdsp_version_sz; + extern unsigned struct_snd_ctl_card_info_sz; + extern unsigned struct_snd_ctl_elem_id_sz; + extern unsigned struct_snd_ctl_elem_info_sz; + extern unsigned struct_snd_ctl_elem_list_sz; + extern unsigned struct_snd_ctl_elem_value_sz; + extern unsigned struct_snd_ctl_tlv_sz; + extern unsigned struct_snd_dm_fm_info_sz; + extern unsigned struct_snd_dm_fm_note_sz; + extern unsigned struct_snd_dm_fm_params_sz; + extern unsigned struct_snd_dm_fm_voice_sz; + extern unsigned struct_snd_emux_misc_mode_sz; + extern unsigned struct_snd_hwdep_dsp_image_sz; + extern unsigned struct_snd_hwdep_dsp_status_sz; + extern unsigned struct_snd_hwdep_info_sz; + extern unsigned struct_snd_pcm_channel_info_sz; + extern unsigned struct_snd_pcm_hw_params_sz; + extern unsigned struct_snd_pcm_info_sz; + extern unsigned struct_snd_pcm_status_sz; + extern unsigned struct_snd_pcm_sw_params_sz; + extern unsigned struct_snd_pcm_sync_ptr_sz; + extern unsigned struct_snd_rawmidi_info_sz; + extern unsigned struct_snd_rawmidi_params_sz; + extern unsigned struct_snd_rawmidi_status_sz; + extern unsigned struct_snd_sb_csp_info_sz; + extern unsigned struct_snd_sb_csp_microcode_sz; + extern unsigned struct_snd_sb_csp_start_sz; + extern unsigned struct_snd_timer_ginfo_sz; + extern unsigned struct_snd_timer_gparams_sz; + extern unsigned struct_snd_timer_gstatus_sz; + extern unsigned struct_snd_timer_id_sz; + extern unsigned struct_snd_timer_info_sz; + extern unsigned struct_snd_timer_params_sz; + extern unsigned struct_snd_timer_select_sz; + extern unsigned struct_snd_timer_status_sz; + extern unsigned struct_snd_xferi_sz; + extern unsigned struct_snd_xfern_sz; + extern unsigned struct_soundfont_patch_info_sz; +#endif + // ioctl request identifiers // A special value to mark ioctls that are not present on the target platform, @@ -1001,6 +1054,119 @@ extern unsigned IOCTL_TIOCSERSETMULTI; extern unsigned IOCTL_TIOCSSERIAL; #endif +#if SANITIZER_LINUX + extern unsigned IOCTL_SNDRV_HWDEP_IOCTL_PVERSION; + extern unsigned IOCTL_SNDRV_HWDEP_IOCTL_INFO; + extern unsigned IOCTL_SNDRV_HWDEP_IOCTL_DSP_STATUS; + extern unsigned IOCTL_SNDRV_HWDEP_IOCTL_DSP_LOAD; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_PVERSION; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_INFO; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_TSTAMP; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_TTSTAMP; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_HW_REFINE; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_HW_PARAMS; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_HW_FREE; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_SW_PARAMS; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_STATUS; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_DELAY; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_HWSYNC; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_SYNC_PTR; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_CHANNEL_INFO; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_PREPARE; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_RESET; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_START; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_DROP; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_DRAIN; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_PAUSE; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_REWIND; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_RESUME; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_XRUN; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_FORWARD; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_WRITEI_FRAMES; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_READI_FRAMES; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_WRITEN_FRAMES; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_READN_FRAMES; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_LINK; + extern unsigned IOCTL_SNDRV_PCM_IOCTL_UNLINK; + extern unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_PVERSION; + extern unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_INFO; + extern unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_PARAMS; + extern unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_STATUS; + extern unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_DROP; + extern unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_DRAIN; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_PVERSION; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_NEXT_DEVICE; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_TREAD; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_GINFO; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_GPARAMS; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_GSTATUS; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_SELECT; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_INFO; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_PARAMS; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_STATUS; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_START; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_STOP; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_CONTINUE; + extern unsigned IOCTL_SNDRV_TIMER_IOCTL_PAUSE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_PVERSION; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_CARD_INFO; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_LIST; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_INFO; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_READ; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_WRITE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_LOCK; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_UNLOCK; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_ADD; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_REPLACE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_REMOVE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_TLV_READ; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_TLV_WRITE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_TLV_COMMAND; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_HWDEP_INFO; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_PCM_INFO; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_RAWMIDI_INFO; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_POWER; + extern unsigned IOCTL_SNDRV_CTL_IOCTL_POWER_STATE; + extern unsigned IOCTL_SNDRV_DM_FM_IOCTL_INFO; + extern unsigned IOCTL_SNDRV_DM_FM_IOCTL_RESET; + extern unsigned IOCTL_SNDRV_DM_FM_IOCTL_PLAY_NOTE; + extern unsigned IOCTL_SNDRV_DM_FM_IOCTL_SET_VOICE; + extern unsigned IOCTL_SNDRV_DM_FM_IOCTL_SET_PARAMS; + extern unsigned IOCTL_SNDRV_DM_FM_IOCTL_SET_MODE; + extern unsigned IOCTL_SNDRV_DM_FM_IOCTL_SET_CONNECTION; + extern unsigned IOCTL_SNDRV_DM_FM_IOCTL_CLEAR_PATCHES; + extern unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_PEAK_RMS; + extern unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_CONFIG_INFO; + extern unsigned IOCTL_SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE; + extern unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_VERSION; + extern unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_MIXER; + extern unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_9632_AEB; + extern unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_PEAK_RMS; + extern unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_CONFIG; + extern unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_LTC; + extern unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_STATUS; + extern unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_VERSION; + extern unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_MIXER; + extern unsigned IOCTL_SNDRV_SB_CSP_IOCTL_INFO; + extern unsigned IOCTL_SNDRV_SB_CSP_IOCTL_LOAD_CODE; + extern unsigned IOCTL_SNDRV_SB_CSP_IOCTL_UNLOAD_CODE; + extern unsigned IOCTL_SNDRV_SB_CSP_IOCTL_START; + extern unsigned IOCTL_SNDRV_SB_CSP_IOCTL_STOP; + extern unsigned IOCTL_SNDRV_SB_CSP_IOCTL_PAUSE; + extern unsigned IOCTL_SNDRV_SB_CSP_IOCTL_RESTART; + extern unsigned IOCTL_SNDRV_EMUX_IOCTL_VERSION; + extern unsigned IOCTL_SNDRV_EMUX_IOCTL_LOAD_PATCH; + extern unsigned IOCTL_SNDRV_EMUX_IOCTL_RESET_SAMPLES; + extern unsigned IOCTL_SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES; + extern unsigned IOCTL_SNDRV_EMUX_IOCTL_MEM_AVAIL; + extern unsigned IOCTL_SNDRV_EMUX_IOCTL_MISC_MODE; +#endif extern const int errno_EOWNERDEAD; } // namespace __sanitizer Index: lib/sanitizer_common/sanitizer_platform_limits_posix.cc =================================================================== --- lib/sanitizer_common/sanitizer_platform_limits_posix.cc +++ lib/sanitizer_common/sanitizer_platform_limits_posix.cc @@ -119,6 +119,15 @@ #include #endif +#if SANITIZER_LINUX +#include +#include +#include +#include +#include +#include +#endif + namespace __sanitizer { unsigned struct_utsname_sz = sizeof(struct utsname); unsigned struct_stat_sz = sizeof(struct stat); @@ -331,6 +340,59 @@ unsigned struct_sioc_vif_req_sz = sizeof(struct sioc_vif_req); #endif +#if SANITIZER_LINUX + unsigned snd_pcm_sframes_t_sz = sizeof(snd_pcm_sframes_t); + unsigned snd_pcm_uframes_t_sz = sizeof(snd_pcm_uframes_t); + unsigned struct_hdsp_9632_aeb_sz = sizeof(struct hdsp_9632_aeb); + unsigned struct_hdsp_config_info_sz = sizeof(struct hdsp_config_info); + unsigned struct_hdsp_firmware_sz = sizeof(struct hdsp_firmware); + unsigned struct_hdspm_config_sz = sizeof(struct hdspm_config); + unsigned struct_hdsp_mixer_sz = sizeof(struct hdsp_mixer); + unsigned struct_hdspm_mixer_ioctl_sz = sizeof(struct hdspm_mixer_ioctl); + unsigned struct_hdspm_peak_rms_sz = sizeof(struct hdspm_peak_rms); + unsigned struct_hdspm_status_sz = sizeof(struct hdspm_status); + unsigned struct_hdspm_version_sz = sizeof(struct hdspm_version); + unsigned struct_hdsp_peak_rms_sz = sizeof(struct hdsp_peak_rms); + unsigned struct_hdsp_version_sz = sizeof(struct hdsp_version); + unsigned struct_snd_ctl_card_info_sz = sizeof(struct snd_ctl_card_info); + unsigned struct_snd_ctl_elem_id_sz = sizeof(struct snd_ctl_elem_id); + unsigned struct_snd_ctl_elem_info_sz = sizeof(struct snd_ctl_elem_info); + unsigned struct_snd_ctl_elem_list_sz = sizeof(struct snd_ctl_elem_list); + unsigned struct_snd_ctl_elem_value_sz = sizeof(struct snd_ctl_elem_value); + unsigned struct_snd_ctl_tlv_sz = sizeof(struct snd_ctl_tlv); + unsigned struct_snd_dm_fm_info_sz = sizeof(struct snd_dm_fm_info); + unsigned struct_snd_dm_fm_note_sz = sizeof(struct snd_dm_fm_note); + unsigned struct_snd_dm_fm_params_sz = sizeof(struct snd_dm_fm_params); + unsigned struct_snd_dm_fm_voice_sz = sizeof(struct snd_dm_fm_voice); + unsigned struct_snd_emux_misc_mode_sz = sizeof(struct snd_emux_misc_mode); + unsigned struct_snd_hwdep_dsp_image_sz = sizeof(struct snd_hwdep_dsp_image); + unsigned struct_snd_hwdep_dsp_status_sz = sizeof(struct snd_hwdep_dsp_status); + unsigned struct_snd_hwdep_info_sz = sizeof(struct snd_hwdep_info); + unsigned struct_snd_pcm_channel_info_sz = sizeof(struct snd_pcm_channel_info); + unsigned struct_snd_pcm_hw_params_sz = sizeof(struct snd_pcm_hw_params); + unsigned struct_snd_pcm_info_sz = sizeof(struct snd_pcm_info); + unsigned struct_snd_pcm_status_sz = sizeof(struct snd_pcm_status); + unsigned struct_snd_pcm_sw_params_sz = sizeof(struct snd_pcm_sw_params); + unsigned struct_snd_pcm_sync_ptr_sz = sizeof(struct snd_pcm_sync_ptr); + unsigned struct_snd_rawmidi_info_sz = sizeof(struct snd_rawmidi_info); + unsigned struct_snd_rawmidi_params_sz = sizeof(struct snd_rawmidi_params); + unsigned struct_snd_rawmidi_status_sz = sizeof(struct snd_rawmidi_status); + unsigned struct_snd_sb_csp_info_sz = sizeof(struct snd_sb_csp_info); + unsigned struct_snd_sb_csp_microcode_sz = sizeof(struct snd_sb_csp_microcode); + unsigned struct_snd_sb_csp_start_sz = sizeof(struct snd_sb_csp_start); + unsigned struct_snd_timer_ginfo_sz = sizeof(struct snd_timer_ginfo); + unsigned struct_snd_timer_gparams_sz = sizeof(struct snd_timer_gparams); + unsigned struct_snd_timer_gstatus_sz = sizeof(struct snd_timer_gstatus); + unsigned struct_snd_timer_id_sz = sizeof(struct snd_timer_id); + unsigned struct_snd_timer_info_sz = sizeof(struct snd_timer_info); + unsigned struct_snd_timer_params_sz = sizeof(struct snd_timer_params); + unsigned struct_snd_timer_select_sz = sizeof(struct snd_timer_select); + unsigned struct_snd_timer_status_sz = sizeof(struct snd_timer_status); + unsigned struct_snd_xferi_sz = sizeof(struct snd_xferi); + unsigned struct_snd_xfern_sz = sizeof(struct snd_xfern); + unsigned struct_soundfont_patch_info_sz = sizeof(struct soundfont_patch_info); +#endif + unsigned IOCTL_NOT_PRESENT = 0; unsigned IOCTL_FIOASYNC = FIOASYNC; @@ -764,6 +826,133 @@ unsigned IOCTL_TIOCSERSETMULTI = TIOCSERSETMULTI; unsigned IOCTL_TIOCSSERIAL = TIOCSSERIAL; #endif +#if SANITIZER_LINUX + unsigned IOCTL_SNDRV_HWDEP_IOCTL_PVERSION = SNDRV_HWDEP_IOCTL_PVERSION; + unsigned IOCTL_SNDRV_HWDEP_IOCTL_INFO = SNDRV_HWDEP_IOCTL_INFO; + unsigned IOCTL_SNDRV_HWDEP_IOCTL_DSP_STATUS = SNDRV_HWDEP_IOCTL_DSP_STATUS; + unsigned IOCTL_SNDRV_HWDEP_IOCTL_DSP_LOAD = SNDRV_HWDEP_IOCTL_DSP_LOAD; + unsigned IOCTL_SNDRV_PCM_IOCTL_PVERSION = SNDRV_PCM_IOCTL_PVERSION; + unsigned IOCTL_SNDRV_PCM_IOCTL_INFO = SNDRV_PCM_IOCTL_INFO; + unsigned IOCTL_SNDRV_PCM_IOCTL_TSTAMP = SNDRV_PCM_IOCTL_TSTAMP; + unsigned IOCTL_SNDRV_PCM_IOCTL_TTSTAMP = SNDRV_PCM_IOCTL_TTSTAMP; + unsigned IOCTL_SNDRV_PCM_IOCTL_HW_REFINE = SNDRV_PCM_IOCTL_HW_REFINE; + unsigned IOCTL_SNDRV_PCM_IOCTL_HW_PARAMS = SNDRV_PCM_IOCTL_HW_PARAMS; + unsigned IOCTL_SNDRV_PCM_IOCTL_HW_FREE = SNDRV_PCM_IOCTL_HW_FREE; + unsigned IOCTL_SNDRV_PCM_IOCTL_SW_PARAMS = SNDRV_PCM_IOCTL_SW_PARAMS; + unsigned IOCTL_SNDRV_PCM_IOCTL_STATUS = SNDRV_PCM_IOCTL_STATUS; + unsigned IOCTL_SNDRV_PCM_IOCTL_DELAY = SNDRV_PCM_IOCTL_DELAY; + unsigned IOCTL_SNDRV_PCM_IOCTL_HWSYNC = SNDRV_PCM_IOCTL_HWSYNC; + unsigned IOCTL_SNDRV_PCM_IOCTL_SYNC_PTR = SNDRV_PCM_IOCTL_SYNC_PTR; + unsigned IOCTL_SNDRV_PCM_IOCTL_CHANNEL_INFO = SNDRV_PCM_IOCTL_CHANNEL_INFO; + unsigned IOCTL_SNDRV_PCM_IOCTL_PREPARE = SNDRV_PCM_IOCTL_PREPARE; + unsigned IOCTL_SNDRV_PCM_IOCTL_RESET = SNDRV_PCM_IOCTL_RESET; + unsigned IOCTL_SNDRV_PCM_IOCTL_START = SNDRV_PCM_IOCTL_START; + unsigned IOCTL_SNDRV_PCM_IOCTL_DROP = SNDRV_PCM_IOCTL_DROP; + unsigned IOCTL_SNDRV_PCM_IOCTL_DRAIN = SNDRV_PCM_IOCTL_DRAIN; + unsigned IOCTL_SNDRV_PCM_IOCTL_PAUSE = SNDRV_PCM_IOCTL_PAUSE; + unsigned IOCTL_SNDRV_PCM_IOCTL_REWIND = SNDRV_PCM_IOCTL_REWIND; + unsigned IOCTL_SNDRV_PCM_IOCTL_RESUME = SNDRV_PCM_IOCTL_RESUME; + unsigned IOCTL_SNDRV_PCM_IOCTL_XRUN = SNDRV_PCM_IOCTL_XRUN; + unsigned IOCTL_SNDRV_PCM_IOCTL_FORWARD = SNDRV_PCM_IOCTL_FORWARD; + unsigned IOCTL_SNDRV_PCM_IOCTL_WRITEI_FRAMES = SNDRV_PCM_IOCTL_WRITEI_FRAMES; + unsigned IOCTL_SNDRV_PCM_IOCTL_READI_FRAMES = SNDRV_PCM_IOCTL_READI_FRAMES; + unsigned IOCTL_SNDRV_PCM_IOCTL_WRITEN_FRAMES = SNDRV_PCM_IOCTL_WRITEN_FRAMES; + unsigned IOCTL_SNDRV_PCM_IOCTL_READN_FRAMES = SNDRV_PCM_IOCTL_READN_FRAMES; + unsigned IOCTL_SNDRV_PCM_IOCTL_LINK = SNDRV_PCM_IOCTL_LINK; + unsigned IOCTL_SNDRV_PCM_IOCTL_UNLINK = SNDRV_PCM_IOCTL_UNLINK; + unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_PVERSION = SNDRV_RAWMIDI_IOCTL_PVERSION; + unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_INFO = SNDRV_RAWMIDI_IOCTL_INFO; + unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_PARAMS = SNDRV_RAWMIDI_IOCTL_PARAMS; + unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_STATUS = SNDRV_RAWMIDI_IOCTL_STATUS; + unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_DROP = SNDRV_RAWMIDI_IOCTL_DROP; + unsigned IOCTL_SNDRV_RAWMIDI_IOCTL_DRAIN = SNDRV_RAWMIDI_IOCTL_DRAIN; + unsigned IOCTL_SNDRV_TIMER_IOCTL_PVERSION = SNDRV_TIMER_IOCTL_PVERSION; + unsigned IOCTL_SNDRV_TIMER_IOCTL_NEXT_DEVICE = SNDRV_TIMER_IOCTL_NEXT_DEVICE; + unsigned IOCTL_SNDRV_TIMER_IOCTL_TREAD = SNDRV_TIMER_IOCTL_TREAD; + unsigned IOCTL_SNDRV_TIMER_IOCTL_GINFO = SNDRV_TIMER_IOCTL_GINFO; + unsigned IOCTL_SNDRV_TIMER_IOCTL_GPARAMS = SNDRV_TIMER_IOCTL_GPARAMS; + unsigned IOCTL_SNDRV_TIMER_IOCTL_GSTATUS = SNDRV_TIMER_IOCTL_GSTATUS; + unsigned IOCTL_SNDRV_TIMER_IOCTL_SELECT = SNDRV_TIMER_IOCTL_SELECT; + unsigned IOCTL_SNDRV_TIMER_IOCTL_INFO = SNDRV_TIMER_IOCTL_INFO; + unsigned IOCTL_SNDRV_TIMER_IOCTL_PARAMS = SNDRV_TIMER_IOCTL_PARAMS; + unsigned IOCTL_SNDRV_TIMER_IOCTL_STATUS = SNDRV_TIMER_IOCTL_STATUS; + unsigned IOCTL_SNDRV_TIMER_IOCTL_START = SNDRV_TIMER_IOCTL_START; + unsigned IOCTL_SNDRV_TIMER_IOCTL_STOP = SNDRV_TIMER_IOCTL_STOP; + unsigned IOCTL_SNDRV_TIMER_IOCTL_CONTINUE = SNDRV_TIMER_IOCTL_CONTINUE; + unsigned IOCTL_SNDRV_TIMER_IOCTL_PAUSE = SNDRV_TIMER_IOCTL_PAUSE; + unsigned IOCTL_SNDRV_CTL_IOCTL_PVERSION = SNDRV_CTL_IOCTL_PVERSION; + unsigned IOCTL_SNDRV_CTL_IOCTL_CARD_INFO = SNDRV_CTL_IOCTL_CARD_INFO; + unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_LIST = SNDRV_CTL_IOCTL_ELEM_LIST; + unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_INFO = SNDRV_CTL_IOCTL_ELEM_INFO; + unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_READ = SNDRV_CTL_IOCTL_ELEM_READ; + unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_WRITE = SNDRV_CTL_IOCTL_ELEM_WRITE; + unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_LOCK = SNDRV_CTL_IOCTL_ELEM_LOCK; + unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_UNLOCK = SNDRV_CTL_IOCTL_ELEM_UNLOCK; + unsigned IOCTL_SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS = + SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS; + unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_ADD = SNDRV_CTL_IOCTL_ELEM_ADD; + unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_REPLACE = SNDRV_CTL_IOCTL_ELEM_REPLACE; + unsigned IOCTL_SNDRV_CTL_IOCTL_ELEM_REMOVE = SNDRV_CTL_IOCTL_ELEM_REMOVE; + unsigned IOCTL_SNDRV_CTL_IOCTL_TLV_READ = SNDRV_CTL_IOCTL_TLV_READ; + unsigned IOCTL_SNDRV_CTL_IOCTL_TLV_WRITE = SNDRV_CTL_IOCTL_TLV_WRITE; + unsigned IOCTL_SNDRV_CTL_IOCTL_TLV_COMMAND = SNDRV_CTL_IOCTL_TLV_COMMAND; + unsigned IOCTL_SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE = + SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE; + unsigned IOCTL_SNDRV_CTL_IOCTL_HWDEP_INFO = SNDRV_CTL_IOCTL_HWDEP_INFO; + unsigned IOCTL_SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE = + SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE; + unsigned IOCTL_SNDRV_CTL_IOCTL_PCM_INFO = SNDRV_CTL_IOCTL_PCM_INFO; + unsigned IOCTL_SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE = + SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE; + unsigned IOCTL_SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE = + SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE; + unsigned IOCTL_SNDRV_CTL_IOCTL_RAWMIDI_INFO = SNDRV_CTL_IOCTL_RAWMIDI_INFO; + unsigned IOCTL_SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE = + SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE; + unsigned IOCTL_SNDRV_CTL_IOCTL_POWER = SNDRV_CTL_IOCTL_POWER; + unsigned IOCTL_SNDRV_CTL_IOCTL_POWER_STATE = SNDRV_CTL_IOCTL_POWER_STATE; + unsigned IOCTL_SNDRV_DM_FM_IOCTL_INFO = SNDRV_DM_FM_IOCTL_INFO; + unsigned IOCTL_SNDRV_DM_FM_IOCTL_RESET = SNDRV_DM_FM_IOCTL_RESET; + unsigned IOCTL_SNDRV_DM_FM_IOCTL_PLAY_NOTE = SNDRV_DM_FM_IOCTL_PLAY_NOTE; + unsigned IOCTL_SNDRV_DM_FM_IOCTL_SET_VOICE = SNDRV_DM_FM_IOCTL_SET_VOICE; + unsigned IOCTL_SNDRV_DM_FM_IOCTL_SET_PARAMS = SNDRV_DM_FM_IOCTL_SET_PARAMS; + unsigned IOCTL_SNDRV_DM_FM_IOCTL_SET_MODE = SNDRV_DM_FM_IOCTL_SET_MODE; + unsigned IOCTL_SNDRV_DM_FM_IOCTL_SET_CONNECTION = + SNDRV_DM_FM_IOCTL_SET_CONNECTION; + unsigned IOCTL_SNDRV_DM_FM_IOCTL_CLEAR_PATCHES = + SNDRV_DM_FM_IOCTL_CLEAR_PATCHES; + unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_PEAK_RMS = SNDRV_HDSP_IOCTL_GET_PEAK_RMS; + unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_CONFIG_INFO = + SNDRV_HDSP_IOCTL_GET_CONFIG_INFO; + unsigned IOCTL_SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE = + SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE; + unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_VERSION = SNDRV_HDSP_IOCTL_GET_VERSION; + unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_MIXER = SNDRV_HDSP_IOCTL_GET_MIXER; + unsigned IOCTL_SNDRV_HDSP_IOCTL_GET_9632_AEB = SNDRV_HDSP_IOCTL_GET_9632_AEB; + unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_PEAK_RMS = + SNDRV_HDSPM_IOCTL_GET_PEAK_RMS; + unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_CONFIG = SNDRV_HDSPM_IOCTL_GET_CONFIG; + unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_LTC = SNDRV_HDSPM_IOCTL_GET_LTC; + unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_STATUS = SNDRV_HDSPM_IOCTL_GET_STATUS; + unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_VERSION = SNDRV_HDSPM_IOCTL_GET_VERSION; + unsigned IOCTL_SNDRV_HDSPM_IOCTL_GET_MIXER = SNDRV_HDSPM_IOCTL_GET_MIXER; + unsigned IOCTL_SNDRV_SB_CSP_IOCTL_INFO = SNDRV_SB_CSP_IOCTL_INFO; + unsigned IOCTL_SNDRV_SB_CSP_IOCTL_LOAD_CODE = SNDRV_SB_CSP_IOCTL_LOAD_CODE; + unsigned IOCTL_SNDRV_SB_CSP_IOCTL_UNLOAD_CODE = + SNDRV_SB_CSP_IOCTL_UNLOAD_CODE; + unsigned IOCTL_SNDRV_SB_CSP_IOCTL_START = SNDRV_SB_CSP_IOCTL_START; + unsigned IOCTL_SNDRV_SB_CSP_IOCTL_STOP = SNDRV_SB_CSP_IOCTL_STOP; + unsigned IOCTL_SNDRV_SB_CSP_IOCTL_PAUSE = SNDRV_SB_CSP_IOCTL_PAUSE; + unsigned IOCTL_SNDRV_SB_CSP_IOCTL_RESTART = SNDRV_SB_CSP_IOCTL_RESTART; + unsigned IOCTL_SNDRV_EMUX_IOCTL_VERSION = SNDRV_EMUX_IOCTL_VERSION; + unsigned IOCTL_SNDRV_EMUX_IOCTL_LOAD_PATCH = SNDRV_EMUX_IOCTL_LOAD_PATCH; + unsigned IOCTL_SNDRV_EMUX_IOCTL_RESET_SAMPLES = + SNDRV_EMUX_IOCTL_RESET_SAMPLES; + unsigned IOCTL_SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES = + SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES; + unsigned IOCTL_SNDRV_EMUX_IOCTL_MEM_AVAIL = SNDRV_EMUX_IOCTL_MEM_AVAIL; + unsigned IOCTL_SNDRV_EMUX_IOCTL_MISC_MODE = SNDRV_EMUX_IOCTL_MISC_MODE; +#endif // EOWNERDEAD is not present in some older platforms. #if defined(EOWNERDEAD) Index: lib/sanitizer_common/scripts/check_lint.sh =================================================================== --- lib/sanitizer_common/scripts/check_lint.sh +++ lib/sanitizer_common/scripts/check_lint.sh @@ -28,7 +28,7 @@ LSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER} LSAN_LIT_TEST_LINT_FILTER=${LSAN_RTL_LINT_FILTER},-whitespace/line_length DFSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int,-runtime/printf,-runtime/references -COMMON_RTL_INC_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int,-runtime/sizeof,-runtime/printf +COMMON_RTL_INC_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int,-runtime/sizeof,-runtime/printf,-readability/fn_size SANITIZER_INCLUDES_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int MKTEMP="mktemp -q /tmp/tmp.XXXXXXXXXX" cd ${LLVM_CHECKOUT}