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
| ||
|
Date: Mon, 10 Jul 2017 10:11:37 +0300 From: Dan Carpenter <dan.carpenter@...cle.com> To: Richard Cochran <richardcochran@...il.com>, Ganesh Goudar <ganeshgr@...lsio.com>, Atul Gupta <atul.gupta@...lsio.com> Cc: netdev@...r.kernel.org, kernel-janitors@...r.kernel.org Subject: [PATCH 1/2 net] ptp: fix error codes in ptp_clock_register() The ptp_clock_register() function returns NULL when it's #ifdefed out because CONFIG_PTP_1588_CLOCK is disabled. Otherwise, it's intended to return error pointers. Unfortunately, there are a couple paths where we forget to set the error code. It means that we could result in NULL pointer dereferences in the callers. Fixes: d94ba80ebbea ("ptp: Added a brand new class driver for ptp clocks.") Signed-off-by: Dan Carpenter <dan.carpenter@...cle.com> diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c index b77435783ef3..a50e96143a25 100644 --- a/drivers/ptp/ptp_clock.c +++ b/drivers/ptp/ptp_clock.c @@ -190,7 +190,7 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info, struct device *parent) { struct ptp_clock *ptp; - int err = 0, index, major = MAJOR(ptp_devt); + int err, index, major = MAJOR(ptp_devt); if (info->n_alarm > PTP_MAX_ALARMS) return ERR_PTR(-EINVAL); @@ -225,8 +225,10 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info, ptp->dev = device_create_with_groups(ptp_class, parent, ptp->devid, ptp, ptp->pin_attr_groups, "ptp%d", ptp->index); - if (IS_ERR(ptp->dev)) + if (IS_ERR(ptp->dev)) { + err = PTR_ERR(ptp->dev); goto no_device; + } /* Register a new PPS source. */ if (info->pps) { @@ -238,6 +240,7 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info, ptp->pps_source = pps_register_source(&pps, PTP_PPS_DEFAULTS); if (!ptp->pps_source) { pr_err("failed to register pps source\n"); + err = -ENOMEM; goto no_pps; } }
Powered by blists - more mailing lists