]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ptp: Split out PTP_MASK_EN_SINGLE ioctl code
authorThomas Gleixner <tglx@linutronix.de>
Wed, 25 Jun 2025 11:52:36 +0000 (13:52 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 27 Jun 2025 00:54:06 +0000 (17:54 -0700)
Finish the ptp_ioctl() cleanup by splitting out the PTP_MASK_EN_SINGLE
ioctl code and removing the remaining local variables and return
statements.

No functional change intended.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20250625115133.364422719@linutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/ptp/ptp_chardev.c

index 3fbbbc09a7ba7645f8efb903a72a424edd5ff9ec..1515cf3328760df53b5c6f7ef4f43870dac3a810 100644 (file)
@@ -441,22 +441,28 @@ static long ptp_mask_clear_all(struct timestamp_event_queue *tsevq)
        return 0;
 }
 
+static long ptp_mask_en_single(struct timestamp_event_queue *tsevq, void __user *arg)
+{
+       unsigned int channel;
+
+       if (copy_from_user(&channel, arg, sizeof(channel)))
+               return -EFAULT;
+       if (channel >= PTP_MAX_CHANNELS)
+               return -EFAULT;
+       set_bit(channel, tsevq->mask);
+       return 0;
+}
+
 long ptp_ioctl(struct posix_clock_context *pccontext, unsigned int cmd,
               unsigned long arg)
 {
-       struct ptp_clock *ptp =
-               container_of(pccontext->clk, struct ptp_clock, clock);
-       struct timestamp_event_queue *tsevq;
+       struct ptp_clock *ptp = container_of(pccontext->clk, struct ptp_clock, clock);
        void __user *argptr;
-       unsigned int i;
-       int err = 0;
 
        if (in_compat_syscall() && cmd != PTP_ENABLE_PPS && cmd != PTP_ENABLE_PPS2)
                arg = (unsigned long)compat_ptr(arg);
        argptr = (void __force __user *)arg;
 
-       tsevq = pccontext->private_clkdata;
-
        switch (cmd) {
        case PTP_CLOCK_GETCAPS:
        case PTP_CLOCK_GETCAPS2:
@@ -506,22 +512,11 @@ long ptp_ioctl(struct posix_clock_context *pccontext, unsigned int cmd,
                return ptp_mask_clear_all(pccontext->private_clkdata);
 
        case PTP_MASK_EN_SINGLE:
-               if (copy_from_user(&i, (void __user *)arg, sizeof(i))) {
-                       err = -EFAULT;
-                       break;
-               }
-               if (i >= PTP_MAX_CHANNELS) {
-                       err = -EFAULT;
-                       break;
-               }
-               set_bit(i, tsevq->mask);
-               break;
+               return ptp_mask_en_single(pccontext->private_clkdata, argptr);
 
        default:
-               err = -ENOTTY;
-               break;
+               return -ENOTTY;
        }
-       return err;
 }
 
 __poll_t ptp_poll(struct posix_clock_context *pccontext, struct file *fp,