static int serport_serio_open(struct serio *serio)
 {
        struct serport *serport = serio->port_data;
-       unsigned long flags;
 
-       spin_lock_irqsave(&serport->lock, flags);
+       guard(spinlock_irqsave)(&serport->lock);
        set_bit(SERPORT_ACTIVE, &serport->flags);
-       spin_unlock_irqrestore(&serport->lock, flags);
 
        return 0;
 }
 static void serport_serio_close(struct serio *serio)
 {
        struct serport *serport = serio->port_data;
-       unsigned long flags;
 
-       spin_lock_irqsave(&serport->lock, flags);
+       guard(spinlock_irqsave)(&serport->lock);
        clear_bit(SERPORT_ACTIVE, &serport->flags);
-       spin_unlock_irqrestore(&serport->lock, flags);
 }
 
 /*
                                  const u8 *fp, size_t count)
 {
        struct serport *serport = tty->disc_data;
-       unsigned long flags;
        unsigned int ch_flags = 0;
        int i;
 
-       spin_lock_irqsave(&serport->lock, flags);
+       guard(spinlock_irqsave)(&serport->lock);
 
        if (!test_bit(SERPORT_ACTIVE, &serport->flags))
-               goto out;
+               return;
 
        for (i = 0; i < count; i++) {
                if (fp) {
 
                serio_interrupt(serport->serio, cp[i], ch_flags);
        }
-
-out:
-       spin_unlock_irqrestore(&serport->lock, flags);
 }
 
 /*
 static void serport_ldisc_hangup(struct tty_struct *tty)
 {
        struct serport *serport = tty->disc_data;
-       unsigned long flags;
 
-       spin_lock_irqsave(&serport->lock, flags);
-       set_bit(SERPORT_DEAD, &serport->flags);
-       spin_unlock_irqrestore(&serport->lock, flags);
+       scoped_guard(spinlock_irqsave, &serport->lock)
+               set_bit(SERPORT_DEAD, &serport->flags);
 
        wake_up_interruptible(&serport->wait);
 }
 static void serport_ldisc_write_wakeup(struct tty_struct * tty)
 {
        struct serport *serport = tty->disc_data;
-       unsigned long flags;
 
-       spin_lock_irqsave(&serport->lock, flags);
+       guard(spinlock_irqsave)(&serport->lock);
+
        if (test_bit(SERPORT_ACTIVE, &serport->flags))
                serio_drv_write_wakeup(serport->serio);
-       spin_unlock_irqrestore(&serport->lock, flags);
 }
 
 /*