aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ptp
diff options
context:
space:
mode:
authorEugene Syromiatnikov <esyr@redhat.com>2019-01-07 16:22:29 +0100
committerDavid S. Miller <davem@davemloft.net>2019-01-08 16:22:56 -0500
commit895ac1376d5abcb94ca1b70a595579f253237790 (patch)
treef5331d51a6640a6702e3098b225a60c38c5bead6 /drivers/ptp
parentMerge ra.kernel.org:/pub/scm/linux/kernel/git/bpf/bpf (diff)
downloadlinux-dev-895ac1376d5abcb94ca1b70a595579f253237790.tar.xz
linux-dev-895ac1376d5abcb94ca1b70a595579f253237790.zip
ptp: check that rsv field is zero in struct ptp_sys_offset_extended
Otherwise it is impossible to use it for something else, as it will break userspace that puts garbage there. The same check should be done in other structures, but the fact that data in reserved fields is ignored is already part of the kernel ABI. Signed-off-by: Eugene Syromiatnikov <esyr@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/ptp')
-rw-r--r--drivers/ptp/ptp_chardev.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/ptp/ptp_chardev.c b/drivers/ptp/ptp_chardev.c
index 797fab33bb98..7cbea796652a 100644
--- a/drivers/ptp/ptp_chardev.c
+++ b/drivers/ptp/ptp_chardev.c
@@ -224,7 +224,8 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, unsigned long arg)
extoff = NULL;
break;
}
- if (extoff->n_samples > PTP_MAX_SAMPLES) {
+ if (extoff->n_samples > PTP_MAX_SAMPLES
+ || extoff->rsv[0] || extoff->rsv[1] || extoff->rsv[2]) {
err = -EINVAL;
break;
}