mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Zhipeng Lu <alexious@zju.edu.cn>
Cc: oe-kbuild-all@lists.linux.dev, Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] ALSA: hdsp: fix some memleaks in snd_hdsp_hwdep_ioctl
Date: Tue, 26 Dec 2023 08:03:07 +0800	[thread overview]
Message-ID: <202312260721.mfXz0imt-lkp@intel.com> (raw)
In-Reply-To: <20231224082533.3540468-1-alexious@zju.edu.cn>

Hi Zhipeng,

kernel test robot noticed the following build warnings:

[auto build test WARNING on tiwai-sound/for-next]
[also build test WARNING on tiwai-sound/for-linus linus/master v6.7-rc7 next-20231222]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Zhipeng-Lu/ALSA-hdsp-fix-some-memleaks-in-snd_hdsp_hwdep_ioctl/20231225-155210
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next
patch link:    https://lore.kernel.org/r/20231224082533.3540468-1-alexious%40zju.edu.cn
patch subject: [PATCH] ALSA: hdsp: fix some memleaks in snd_hdsp_hwdep_ioctl
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20231226/202312260721.mfXz0imt-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231226/202312260721.mfXz0imt-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312260721.mfXz0imt-lkp@intel.com/

All warnings (new ones prefixed by >>):

   sound/pci/rme9652/hdsp.c: In function 'snd_hdsp_hwdep_ioctl':
>> sound/pci/rme9652/hdsp.c:4917:1: warning: label 'err' defined but not used [-Wunused-label]
    4917 | err:
         | ^~~


vim +/err +4917 sound/pci/rme9652/hdsp.c

  4727	
  4728	static int snd_hdsp_hwdep_ioctl(struct snd_hwdep *hw, struct file *file, unsigned int cmd, unsigned long arg)
  4729	{
  4730		struct hdsp *hdsp = hw->private_data;
  4731		void __user *argp = (void __user *)arg;
  4732		int err;
  4733	
  4734		switch (cmd) {
  4735		case SNDRV_HDSP_IOCTL_GET_PEAK_RMS: {
  4736			struct hdsp_peak_rms __user *peak_rms = (struct hdsp_peak_rms __user *)arg;
  4737	
  4738			err = hdsp_check_for_iobox(hdsp);
  4739			if (err < 0)
  4740				return err;
  4741	
  4742			err = hdsp_check_for_firmware(hdsp, 1);
  4743			if (err < 0)
  4744				return err;
  4745	
  4746			if (!(hdsp->state & HDSP_FirmwareLoaded)) {
  4747				dev_err(hdsp->card->dev,
  4748					"firmware needs to be uploaded to the card.\n");
  4749				return -EINVAL;
  4750			}
  4751	
  4752			switch (hdsp->io_type) {
  4753			case H9652:
  4754				return hdsp_9652_get_peak(hdsp, peak_rms);
  4755			case H9632:
  4756				return hdsp_9632_get_peak(hdsp, peak_rms);
  4757			default:
  4758				return hdsp_get_peak(hdsp, peak_rms);
  4759			}
  4760		}
  4761		case SNDRV_HDSP_IOCTL_GET_CONFIG_INFO: {
  4762			struct hdsp_config_info info;
  4763			unsigned long flags;
  4764			int i;
  4765	
  4766			err = hdsp_check_for_iobox(hdsp);
  4767			if (err < 0)
  4768				return err;
  4769	
  4770			err = hdsp_check_for_firmware(hdsp, 1);
  4771			if (err < 0)
  4772				return err;
  4773	
  4774			memset(&info, 0, sizeof(info));
  4775			spin_lock_irqsave(&hdsp->lock, flags);
  4776			info.pref_sync_ref = (unsigned char)hdsp_pref_sync_ref(hdsp);
  4777			info.wordclock_sync_check = (unsigned char)hdsp_wc_sync_check(hdsp);
  4778			if (hdsp->io_type != H9632)
  4779			    info.adatsync_sync_check = (unsigned char)hdsp_adatsync_sync_check(hdsp);
  4780			info.spdif_sync_check = (unsigned char)hdsp_spdif_sync_check(hdsp);
  4781			for (i = 0; i < ((hdsp->io_type != Multiface && hdsp->io_type != RPM && hdsp->io_type != H9632) ? 3 : 1); ++i)
  4782				info.adat_sync_check[i] = (unsigned char)hdsp_adat_sync_check(hdsp, i);
  4783			info.spdif_in = (unsigned char)hdsp_spdif_in(hdsp);
  4784			info.spdif_out = (unsigned char)hdsp_toggle_setting(hdsp,
  4785					HDSP_SPDIFOpticalOut);
  4786			info.spdif_professional = (unsigned char)
  4787				hdsp_toggle_setting(hdsp, HDSP_SPDIFProfessional);
  4788			info.spdif_emphasis = (unsigned char)
  4789				hdsp_toggle_setting(hdsp, HDSP_SPDIFEmphasis);
  4790			info.spdif_nonaudio = (unsigned char)
  4791				hdsp_toggle_setting(hdsp, HDSP_SPDIFNonAudio);
  4792			info.spdif_sample_rate = hdsp_spdif_sample_rate(hdsp);
  4793			info.system_sample_rate = hdsp->system_sample_rate;
  4794			info.autosync_sample_rate = hdsp_external_sample_rate(hdsp);
  4795			info.system_clock_mode = (unsigned char)hdsp_system_clock_mode(hdsp);
  4796			info.clock_source = (unsigned char)hdsp_clock_source(hdsp);
  4797			info.autosync_ref = (unsigned char)hdsp_autosync_ref(hdsp);
  4798			info.line_out = (unsigned char)
  4799				hdsp_toggle_setting(hdsp, HDSP_LineOut);
  4800			if (hdsp->io_type == H9632) {
  4801				info.da_gain = (unsigned char)hdsp_da_gain(hdsp);
  4802				info.ad_gain = (unsigned char)hdsp_ad_gain(hdsp);
  4803				info.phone_gain = (unsigned char)hdsp_phone_gain(hdsp);
  4804				info.xlr_breakout_cable =
  4805					(unsigned char)hdsp_toggle_setting(hdsp,
  4806						HDSP_XLRBreakoutCable);
  4807	
  4808			} else if (hdsp->io_type == RPM) {
  4809				info.da_gain = (unsigned char) hdsp_rpm_input12(hdsp);
  4810				info.ad_gain = (unsigned char) hdsp_rpm_input34(hdsp);
  4811			}
  4812			if (hdsp->io_type == H9632 || hdsp->io_type == H9652)
  4813				info.analog_extension_board =
  4814					(unsigned char)hdsp_toggle_setting(hdsp,
  4815						    HDSP_AnalogExtensionBoard);
  4816			spin_unlock_irqrestore(&hdsp->lock, flags);
  4817			if (copy_to_user(argp, &info, sizeof(info)))
  4818				return -EFAULT;
  4819			break;
  4820		}
  4821		case SNDRV_HDSP_IOCTL_GET_9632_AEB: {
  4822			struct hdsp_9632_aeb h9632_aeb;
  4823	
  4824			if (hdsp->io_type != H9632) return -EINVAL;
  4825			h9632_aeb.aebi = hdsp->ss_in_channels - H9632_SS_CHANNELS;
  4826			h9632_aeb.aebo = hdsp->ss_out_channels - H9632_SS_CHANNELS;
  4827			if (copy_to_user(argp, &h9632_aeb, sizeof(h9632_aeb)))
  4828				return -EFAULT;
  4829			break;
  4830		}
  4831		case SNDRV_HDSP_IOCTL_GET_VERSION: {
  4832			struct hdsp_version hdsp_version;
  4833			int err;
  4834	
  4835			if (hdsp->io_type == H9652 || hdsp->io_type == H9632) return -EINVAL;
  4836			if (hdsp->io_type == Undefined) {
  4837				err = hdsp_get_iobox_version(hdsp);
  4838				if (err < 0)
  4839					return err;
  4840			}
  4841			memset(&hdsp_version, 0, sizeof(hdsp_version));
  4842			hdsp_version.io_type = hdsp->io_type;
  4843			hdsp_version.firmware_rev = hdsp->firmware_rev;
  4844			if (copy_to_user(argp, &hdsp_version, sizeof(hdsp_version)))
  4845				return -EFAULT;
  4846			break;
  4847		}
  4848		case SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE: {
  4849			struct hdsp_firmware firmware;
  4850			u32 __user *firmware_data;
  4851			int err;
  4852	
  4853			if (hdsp->io_type == H9652 || hdsp->io_type == H9632) return -EINVAL;
  4854			/* SNDRV_HDSP_IOCTL_GET_VERSION must have been called */
  4855			if (hdsp->io_type == Undefined) return -EINVAL;
  4856	
  4857			if (hdsp->state & (HDSP_FirmwareCached | HDSP_FirmwareLoaded))
  4858				return -EBUSY;
  4859	
  4860			dev_info(hdsp->card->dev,
  4861				 "initializing firmware upload\n");
  4862			if (copy_from_user(&firmware, argp, sizeof(firmware)))
  4863				return -EFAULT;
  4864			firmware_data = (u32 __user *)firmware.firmware_data;
  4865	
  4866			if (hdsp_check_for_iobox (hdsp))
  4867				return -EIO;
  4868	
  4869			if (!hdsp->fw_uploaded) {
  4870				hdsp->fw_uploaded = vmalloc(HDSP_FIRMWARE_SIZE);
  4871				if (!hdsp->fw_uploaded)
  4872					return -ENOMEM;
  4873			}
  4874	
  4875			if (copy_from_user(hdsp->fw_uploaded, firmware_data,
  4876					   HDSP_FIRMWARE_SIZE)) {
  4877				err = -EFAULT;
  4878				goto free_fw_uploaded;
  4879			}
  4880	
  4881			hdsp->state |= HDSP_FirmwareCached;
  4882	
  4883			err = snd_hdsp_load_firmware_from_cache(hdsp);
  4884			if (err < 0)
  4885				goto free_fw_uploaded;
  4886	
  4887			if (!(hdsp->state & HDSP_InitializationComplete)) {
  4888				err = snd_hdsp_enable_io(hdsp);
  4889				if (err < 0)
  4890					goto free_fw_uploaded;
  4891	
  4892				snd_hdsp_initialize_channels(hdsp);
  4893				snd_hdsp_initialize_midi_flush(hdsp);
  4894	
  4895				err = snd_hdsp_create_alsa_devices(hdsp->card, hdsp);
  4896				if (err < 0) {
  4897					dev_err(hdsp->card->dev,
  4898						"error creating alsa devices\n");
  4899					goto free_fw_uploaded;
  4900				}
  4901			}
  4902			break;
  4903		}
  4904		case SNDRV_HDSP_IOCTL_GET_MIXER: {
  4905			struct hdsp_mixer __user *mixer = (struct hdsp_mixer __user *)argp;
  4906			if (copy_to_user(mixer->matrix, hdsp->mixer_matrix, sizeof(unsigned short)*HDSP_MATRIX_MIXER_SIZE))
  4907				return -EFAULT;
  4908			break;
  4909		}
  4910		default:
  4911			return -EINVAL;
  4912		}
  4913		return 0;
  4914	free_fw_uploaded:
  4915		vfree(hdsp->fw_uploaded);
  4916		hdsp->fw_uploaded = NULL;
> 4917	err:
  4918		return err;
  4919	}
  4920	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

      parent reply	other threads:[~2023-12-26  0:03 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-24  8:25 Zhipeng Lu
2023-12-25 22:50 ` kernel test robot
2023-12-26  0:03 ` kernel test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202312260721.mfXz0imt-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=alexious@zju.edu.cn \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®