firmware: tegra: Changes for v5.15-rc1
This contains a single fix to stop a slight abuse of the seq_buf API. -----BEGIN PGP SIGNATURE----- iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmEWlTgTHHRyZWRpbmdA bnZpZGlhLmNvbQAKCRDdI6zXfz6zoX7wD/9T8QtQc/vcIxcVzt/xnQq81kQ/Qc2e MTldjhrLahtrtXJqrJ0MD6uvm4nxxHEswtSFK/HrH+HuWw8VtE1sE3gn2+jgW5v2 kPUsOMCwntKiyKZczys/bls62YM7dJ+HczVQS7uuMbMujSdMcWP8ckdJz6SyXNY6 cEEmVauPMdwStWBB2VnudCBhytuw1urBsGXNWZ5J2VgnWM6tmTZGWwA3HKaWY+NU 7tNt8EHWDBV/vZXUH1B8iyPJS2ROuUBkGr5uocDuQiM5Y7Gk1DHzX5N494bTY18N 9pwbRPBuAYKpyobnvGXKiQ10FF11mfjJ71B8/2wr4CYJykPe0BvE0Q8ctwz1y6Vq wrlsvztvN2lkRw5eNk0piyPjejq/hhkXLcfBXSMzaRThfZgnDgEskJZQh2t/ie7W xGh2F70udA54dSIxswJWjPWGnYWR9VV1Dztl+uqT4zOPmDZuQkGQ5kxuSXxHvbGl AlbABKGiXBZYkuoHW5Jdk5KOWnZkzYpgtESSbubozELVymS+YtJ6XWbLOmQqP8Xs zsT4yTLfGRn+WeJSr/zf0lIIsAAT3WNMC97reoBbdmw1Cfe2G5e2mqBut4+GU5Iz 1Zntr5m77NLM1WLcR4TwQ8rcm38OVgbvDYStqVLv6FX4UFxSQbswvkhXEXlRd2A8 JPokhii8onaCsw== =A0aA -----END PGP SIGNATURE----- gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmEdCZ0ACgkQmmx57+YA GNl/wQ/+MUZUSHREZSz0uhmc4B0gGRcipdf+WivOC4LkJQO9z5pjltjdELKRrMig /aYeVCNKng2dF5SjLApyUW3cCFFW31HQpvL7dtrgPK0Qo+bVBt+P/PXZGjesJdEI BxKWtQ07OXL409wHKodMYB/nNlwp49F+eFUFgM4ALQve3dVXqtxZNxxPaQHn4KIp HV/QKPW7l+jQqlRcuPAWMMsFSaH52kOgPmvvZptLkBnilrTBzqi2r6Vx0EHUxlzn 6ZVEH3YsjW7AYg/NEVLflpn++ri6u4QM7nOSUGNgRoEw5pwyEAtrXb+jD5Gga03J 1KzRN+bOHYZE9NnTt0L+nrgeDqRMXsFbgeWH3/Bb+1i+OaY8J5d+OszaA+Uk+ib3 T/0n4CDqun5Ueqp2lVEMHyofNGW+a7MKK3vs2z1mdXxXe7upDHSW4Ae5VhVArqmV 7hG/oMICHtiORE/w5I85RtpKKeGke81SriJEYXk9M5CV8sOXxhwXulyW1IcsRpO8 s6CdEZyy7xJDqG3EOZLO+b1NgWH+w4ZPDf+J14G907lZJbdLGZmTu7fta+Ni94cf YdHoQfdnDyHkJRyzuJMzhO1mtESidXKveviV4sJ9maRtu8zLOYuzLY7XPp59pkIs GgIsiJzo2Hj2ZDR1VWYvmAsDSygkf+VpRtA6WoVR/Nqim4SLQYA= =5Ef7 -----END PGP SIGNATURE----- Merge tag 'tegra-for-5.15-firmware' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/drivers firmware: tegra: Changes for v5.15-rc1 This contains a single fix to stop a slight abuse of the seq_buf API. * tag 'tegra-for-5.15-firmware' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux: firmware: tegra: Stop using seq_get_buf() Link: https://lore.kernel.org/r/20210813162157.2820913-2-thierry.reding@gmail.com Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
8745d0e915
@ -296,25 +296,61 @@ static int bpmp_debug_show(struct seq_file *m, void *p)
|
||||
struct file *file = m->private;
|
||||
struct inode *inode = file_inode(file);
|
||||
struct tegra_bpmp *bpmp = inode->i_private;
|
||||
char *databuf = NULL;
|
||||
char fnamebuf[256];
|
||||
const char *filename;
|
||||
uint32_t nbytes = 0;
|
||||
size_t len;
|
||||
int err;
|
||||
|
||||
len = seq_get_buf(m, &databuf);
|
||||
if (!databuf)
|
||||
return -ENOMEM;
|
||||
struct mrq_debug_request req = {
|
||||
.cmd = cpu_to_le32(CMD_DEBUG_READ),
|
||||
};
|
||||
struct mrq_debug_response resp;
|
||||
struct tegra_bpmp_message msg = {
|
||||
.mrq = MRQ_DEBUG,
|
||||
.tx = {
|
||||
.data = &req,
|
||||
.size = sizeof(req),
|
||||
},
|
||||
.rx = {
|
||||
.data = &resp,
|
||||
.size = sizeof(resp),
|
||||
},
|
||||
};
|
||||
uint32_t fd = 0, len = 0;
|
||||
int remaining, err;
|
||||
|
||||
filename = get_filename(bpmp, file, fnamebuf, sizeof(fnamebuf));
|
||||
if (!filename)
|
||||
return -ENOENT;
|
||||
|
||||
err = mrq_debug_read(bpmp, filename, databuf, len, &nbytes);
|
||||
if (!err)
|
||||
seq_commit(m, nbytes);
|
||||
mutex_lock(&bpmp_debug_lock);
|
||||
err = mrq_debug_open(bpmp, filename, &fd, &len, 0);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
req.frd.fd = fd;
|
||||
remaining = len;
|
||||
|
||||
while (remaining > 0) {
|
||||
err = tegra_bpmp_transfer(bpmp, &msg);
|
||||
if (err < 0) {
|
||||
goto close;
|
||||
} else if (msg.rx.ret < 0) {
|
||||
err = -EINVAL;
|
||||
goto close;
|
||||
}
|
||||
|
||||
if (resp.frd.readlen > remaining) {
|
||||
pr_err("%s: read data length invalid\n", __func__);
|
||||
err = -EINVAL;
|
||||
goto close;
|
||||
}
|
||||
|
||||
seq_write(m, resp.frd.data, resp.frd.readlen);
|
||||
remaining -= resp.frd.readlen;
|
||||
}
|
||||
|
||||
close:
|
||||
err = mrq_debug_close(bpmp, fd);
|
||||
out:
|
||||
mutex_unlock(&bpmp_debug_lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user