diff options
Diffstat (limited to 'drivers/ptp')
-rw-r--r-- | drivers/ptp/ptp_chardev.c | 1 | ||||
-rw-r--r-- | drivers/ptp/ptp_clock.c | 1 | ||||
-rw-r--r-- | drivers/ptp/ptp_ixp46x.c | 15 |
3 files changed, 10 insertions, 7 deletions
diff --git a/drivers/ptp/ptp_chardev.c b/drivers/ptp/ptp_chardev.c index d637c933c8a9..58a97d420572 100644 --- a/drivers/ptp/ptp_chardev.c +++ b/drivers/ptp/ptp_chardev.c @@ -193,6 +193,7 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, unsigned long arg) if (err) break; + memset(&precise_offset, 0, sizeof(precise_offset)); ts = ktime_to_timespec64(xtstamp.device); precise_offset.device.sec = ts.tv_sec; precise_offset.device.nsec = ts.tv_nsec; diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c index 2e481b9e8ea5..86280b7e41f3 100644 --- a/drivers/ptp/ptp_clock.c +++ b/drivers/ptp/ptp_clock.c @@ -263,6 +263,7 @@ no_sysfs: no_device: mutex_destroy(&ptp->tsevq_mux); mutex_destroy(&ptp->pincfg_mux); + ida_simple_remove(&ptp_clocks_map, index); no_slot: kfree(ptp); no_memory: diff --git a/drivers/ptp/ptp_ixp46x.c b/drivers/ptp/ptp_ixp46x.c index ee4f183ef9ee..344a3bac210b 100644 --- a/drivers/ptp/ptp_ixp46x.c +++ b/drivers/ptp/ptp_ixp46x.c @@ -268,18 +268,19 @@ static int setup_interrupt(int gpio) return err; irq = gpio_to_irq(gpio); + if (irq < 0) + return irq; - if (NO_IRQ == irq) - return NO_IRQ; - - if (irq_set_irq_type(irq, IRQF_TRIGGER_FALLING)) { + err = irq_set_irq_type(irq, IRQF_TRIGGER_FALLING); + if (err) { pr_err("cannot set trigger type for irq %d\n", irq); - return NO_IRQ; + return err; } - if (request_irq(irq, isr, 0, DRIVER, &ixp_clock)) { + err = request_irq(irq, isr, 0, DRIVER, &ixp_clock); + if (err) { pr_err("request_irq failed for irq %d\n", irq); - return NO_IRQ; + return err; } return irq; |