Commit efa26234 authored by Gwendal Grignou's avatar Gwendal Grignou Committed by Heyuan Wang
Browse files

scsi: ufs: core: sysfs: Prevent div by zero

stable inclusion
from stable-v6.6.66
commit 0069928727c2e95ca26c738fbe6e4b241aeaaf08
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBEAOG
CVE: CVE-2024-56622

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0069928727c2e95ca26c738fbe6e4b241aeaaf08



--------------------------------

commit eb48e9fc0028bed94a40a9352d065909f19e333c upstream.

Prevent a division by 0 when monitoring is not enabled.

Fixes: 1d8613a2 ("scsi: ufs: core: Introduce HBA performance monitor sysfs nodes")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarGwendal Grignou <gwendal@chromium.org>
Link: https://lore.kernel.org/r/20241120062522.917157-1-gwendal@chromium.org


Reviewed-by: default avatarCan Guo <quic_cang@quicinc.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarHeyuan Wang <wangheyuan2@h-partners.com>
parent 31b452f6
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -485,6 +485,9 @@ static ssize_t read_req_latency_avg_show(struct device *dev,
	struct ufs_hba *hba = dev_get_drvdata(dev);
	struct ufs_hba_monitor *m = &hba->monitor;

	if (!m->nr_req[READ])
		return sysfs_emit(buf, "0\n");

	return sysfs_emit(buf, "%llu\n", div_u64(ktime_to_us(m->lat_sum[READ]),
						 m->nr_req[READ]));
}
@@ -552,6 +555,9 @@ static ssize_t write_req_latency_avg_show(struct device *dev,
	struct ufs_hba *hba = dev_get_drvdata(dev);
	struct ufs_hba_monitor *m = &hba->monitor;

	if (!m->nr_req[WRITE])
		return sysfs_emit(buf, "0\n");

	return sysfs_emit(buf, "%llu\n", div_u64(ktime_to_us(m->lat_sum[WRITE]),
						 m->nr_req[WRITE]));
}