lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250912075032.GB27864@nxa18884-linux.ap.freescale.net>
Date: Fri, 12 Sep 2025 15:50:32 +0800
From: Peng Fan <peng.fan@....nxp.com>
To: Frank Li <Frank.li@....com>
Cc: Peng Fan <peng.fan@....com>, Sudeep Holla <sudeep.holla@....com>,
	Cristian Marussi <cristian.marussi@....com>,
	Shawn Guo <shawnguo@...nel.org>,
	Sascha Hauer <s.hauer@...gutronix.de>,
	Pengutronix Kernel Team <kernel@...gutronix.de>,
	Fabio Estevam <festevam@...il.com>, arm-scmi@...r.kernel.org,
	imx@...ts.linux.dev, linux-arm-kernel@...ts.infradead.org,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/2] firmware: imx: sm-misc: Dump syslog info

Hi Frank,

On Wed, Sep 10, 2025 at 11:25:04AM -0400, Frank Li wrote:
>On Wed, Sep 10, 2025 at 10:28:18PM +0800, Peng Fan wrote:
[...]
>> +static int syslog_show(struct seq_file *file, void *priv)
>> +{
>> +	struct device *dev = file->private;
>> +	/* 4KB is large enough for syslog */
>> +	void *syslog __free(kfree) = kmalloc(SZ_4K, GFP_KERNEL);
>> +	/* syslog API use num words, not num bytes */
>> +	u16 size = SZ_4K / 4;
>> +	int ret;
>> +
>> +	if (!ph)
>> +		return -ENODEV;
>> +
>> +	ret = imx_misc_ctrl_ops->misc_syslog(ph, &size, syslog);
>> +	if (ret) {
>> +		if (size > SZ_4K / 4) {
>> +			dev_err(dev, "syslog size is larger than 4KB, please enlarge\n");
>> +			return ret;
>

size could be runtime updated with the returned syslog size.

>suppose it is never happen, you pass down size to misc_syslog, it should
>never write data more than size.

Right. But size could be updated even it not write data more than the input
size.

>
>I am not sure what means of misc_syslog() return value. Generally it should
>be how many data in pointer 'syslog' if return value > 0.
>
>So seq_hex_dump() should use ret value. Then only dump validate data,
>instead of the whole buffer.

size has been updated by misc_syslog, so it is not to dump whole buffer.

Thanks,
Peng

>
>Frank
>
>> +		}
>> +	}
>> +
>> +	seq_hex_dump(file, " ", DUMP_PREFIX_NONE, 16, sizeof(u32), syslog, size * 4, false);
>> +	seq_putc(file, '\n');
>> +
>> +	return 0;
>> +}
>> +DEFINE_SHOW_ATTRIBUTE(syslog);
>> +
>> +static void scmi_imx_misc_put(void *p)
>> +{
>> +	debugfs_remove((struct dentry *)p);
>> +}
>> +
>>  static int scmi_imx_misc_ctrl_probe(struct scmi_device *sdev)
>>  {
>>  	const struct scmi_handle *handle = sdev->handle;
>>  	struct device_node *np = sdev->dev.of_node;
>> +	struct dentry *scmi_imx_dentry;
>>  	u32 src_id, flags;
>>  	int ret, i, num;
>>
>> @@ -98,6 +134,12 @@ static int scmi_imx_misc_ctrl_probe(struct scmi_device *sdev)
>>  		}
>>  	}
>>
>> +	scmi_imx_dentry = debugfs_create_dir("scmi_imx", NULL);
>> +	if (!IS_ERR(scmi_imx_dentry))
>> +		debugfs_create_file("syslog", 0444, scmi_imx_dentry, &sdev->dev, &syslog_fops);
>> +
>> +	devm_add_action_or_reset(&sdev->dev, scmi_imx_misc_put, scmi_imx_dentry);
>> +
>>  	return 0;
>>  }
>>
>>
>> --
>> 2.37.1
>>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ