Re: [PATCH 2/2] ASoC: qcom: add apq8039 sound card support
Hi Pantelis,
I love your patch! Perhaps something to improve:
[auto build test WARNING on asoc/for-next] [also build test WARNING on sound/for-next v5.8-rc1 next-20200618] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use as documented in https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Pantelis-Antoniou/ASoC-qcom-add-apq... base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next config: parisc-allyesconfig (attached as .config) compiler: hppa-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=parisc
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot lkp@intel.com
All warnings (new ones prefixed by >>, old ones prefixed by <<):
sound/soc/qcom/apq8039.c: In function 'snd_soc_card_ctl_getset.constprop':
sound/soc/qcom/apq8039.c:176:5: warning: 'strncpy' destination unchanged after copying no bytes [-Wstringop-truncation]
176 | strncpy(orig, uinfo->value.enumerated.name, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 177 | origsz); | ~~~~~~~
vim +/strncpy +176 sound/soc/qcom/apq8039.c
67 68 static int 69 snd_soc_card_ctl_getset(struct snd_soc_card *card, 70 const char *name, 71 char *orig, size_t origsz, const char *value) 72 { 73 struct snd_kcontrol *ctl; 74 struct snd_ctl_elem_info *uinfo = NULL; 75 struct snd_ctl_elem_value *uctl = NULL; 76 unsigned int i, count; 77 int ret; 78 79 /* get the control */ 80 ctl = snd_soc_card_ctl_find(card, name, NULL); 81 if (!ctl) 82 return -ENOENT; 83 84 /* allocate info and value */ 85 uinfo = kzalloc(sizeof(*uinfo), GFP_KERNEL); 86 uctl = kzalloc(sizeof(*uctl), GFP_KERNEL); 87 if (!uinfo || !uctl) { 88 ret = -ENOMEM; 89 goto out_free; 90 } 91 92 ret = ctl->info(ctl, uinfo); 93 if (ret) 94 goto out_free; 95 if (uinfo->count != 1) { 96 ret = -ENOTSUPP; 97 goto out_free; 98 } 99 100 ret = ctl->get(ctl, uctl); 101 if (ret) 102 goto out_free; 103 104 ret = 0; 105 106 switch (uinfo->type) { 107 108 case SNDRV_CTL_ELEM_TYPE_NONE: 109 break; 110 111 case SNDRV_CTL_ELEM_TYPE_BOOLEAN: 112 if (orig && origsz > 0) 113 snprintf(orig, origsz, "%s", 114 uctl->value.integer.value[0] ? 115 "true" : "false"); 116 117 if (value) { 118 bool bval; 119 120 ret = kstrtobool(value, &bval); 121 if (ret) 122 goto out_free; 123 uctl->value.integer.value[0] = !!bval; 124 125 } 126 break; 127 128 case SNDRV_CTL_ELEM_TYPE_INTEGER: 129 if (orig && origsz > 0) 130 snprintf(orig, origsz, "%ld", 131 uctl->value.integer.value[0]); 132 133 if (value) { 134 ret = kstrtol(value, 10, 135 &uctl->value.integer.value[0]); 136 if (ret) 137 goto out_free; 138 } 139 break; 140 141 case SNDRV_CTL_ELEM_TYPE_ENUMERATED: 142 count = uinfo->value.enumerated.items; 143 144 if (value) { /* set */ 145 for (i = 0; i < count; i++) { 146 uinfo->value.enumerated.item = i; 147 ret = ctl->info(ctl, uinfo); 148 if (ret) 149 goto out_free; 150 151 if (!strcmp(value, 152 uinfo->value.enumerated.name)) 153 break; 154 } 155 156 /* setting without finding the enum */ 157 if (i >= count) { 158 ret = -EINVAL; 159 goto out_free; 160 } 161 uctl->value.enumerated.item[0] = i; 162 } else { /* get */ 163 uinfo->value.enumerated.item = 164 uctl->value.enumerated.item[0]; 165 ret = ctl->info(ctl, uinfo); 166 if (ret) 167 goto out_free; 168 169 if (orig && origsz) { 170 if (origsz < 171 strlen(uinfo->value.enumerated.name) 172 + 1) { 173 ret = -ENOSPC; 174 goto out_free; 175 }
176 strncpy(orig, uinfo->value.enumerated.name,
177 origsz); 178 } 179 } 180 break; 181 182 case SNDRV_CTL_ELEM_TYPE_INTEGER64: 183 if (orig && origsz > 0) 184 snprintf(orig, origsz, "%lld", 185 uctl->value.integer64.value[0]); 186 187 if (value) { 188 ret = kstrtoll(value, 10, 189 &uctl->value.integer64.value[0]); 190 if (ret) 191 goto out_free; 192 } 193 break; 194 195 case SNDRV_CTL_ELEM_TYPE_BYTES: 196 case SNDRV_CTL_ELEM_TYPE_IEC958: 197 ret = -ENOTSUPP; 198 goto out_free; 199 default: 200 ret = -EINVAL; 201 goto out_free; 202 } 203 204 if (value) { 205 ret = ctl->put(ctl, uctl); 206 if (ret < 0) 207 goto out_free; 208 209 /* if it changed, report change to user space */ 210 if (ret > 0) 211 snd_ctl_notify(card->snd_card, 212 SNDRV_CTL_EVENT_MASK_VALUE, 213 &uctl->id); 214 } 215 216 out_free: 217 kfree(uctl); 218 kfree(uinfo); 219 220 if (ret < 0) 221 dev_err(card->dev, "%s: %s operation failed for "%s"", 222 __func__, value ? "set" : "get", name); 223 224 return ret; 225 } 226
--- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
participants (1)
-
kernel test robot