| From 268bbf902e1f490f138007a9e1c25b8afa054ebd Mon Sep 17 00:00:00 2001 |
| From: Miroslav Lichvar <mlichvar@redhat.com> |
| Date: Fri, 9 Nov 2018 11:14:43 +0100 |
| Subject: ptp: check gettime64 return code in PTP_SYS_OFFSET ioctl |
| |
| [ Upstream commit 83d0bdc7390b890905634186baaa294475cd6a06 ] |
| |
| If a gettime64 call fails, return the error and avoid copying data back |
| to user. |
| |
| Cc: Richard Cochran <richardcochran@gmail.com> |
| Cc: Jacob Keller <jacob.e.keller@intel.com> |
| Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/ptp/ptp_chardev.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/ptp/ptp_chardev.c b/drivers/ptp/ptp_chardev.c |
| index a421d6c551b6..ecb41eacd74b 100644 |
| --- a/drivers/ptp/ptp_chardev.c |
| +++ b/drivers/ptp/ptp_chardev.c |
| @@ -228,7 +228,9 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, unsigned long arg) |
| pct->sec = ts.tv_sec; |
| pct->nsec = ts.tv_nsec; |
| pct++; |
| - ptp->info->gettime64(ptp->info, &ts); |
| + err = ptp->info->gettime64(ptp->info, &ts); |
| + if (err) |
| + goto out; |
| pct->sec = ts.tv_sec; |
| pct->nsec = ts.tv_nsec; |
| pct++; |
| @@ -281,6 +283,7 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, unsigned long arg) |
| break; |
| } |
| |
| +out: |
| kfree(sysoff); |
| return err; |
| } |
| -- |
| 2.19.1 |
| |