@@ -50,11 +50,9 @@ static int serport_serio_write(struct serio *serio, unsigned char data)
5050static int serport_serio_open (struct serio * serio )
5151{
5252 struct serport * serport = serio -> port_data ;
53- unsigned long flags ;
5453
55- spin_lock_irqsave ( & serport -> lock , flags );
54+ guard ( spinlock_irqsave )( & serport -> lock );
5655 set_bit (SERPORT_ACTIVE , & serport -> flags );
57- spin_unlock_irqrestore (& serport -> lock , flags );
5856
5957 return 0 ;
6058}
@@ -63,11 +61,9 @@ static int serport_serio_open(struct serio *serio)
6361static void serport_serio_close (struct serio * serio )
6462{
6563 struct serport * serport = serio -> port_data ;
66- unsigned long flags ;
6764
68- spin_lock_irqsave ( & serport -> lock , flags );
65+ guard ( spinlock_irqsave )( & serport -> lock );
6966 clear_bit (SERPORT_ACTIVE , & serport -> flags );
70- spin_unlock_irqrestore (& serport -> lock , flags );
7167}
7268
7369/*
@@ -118,14 +114,13 @@ static void serport_ldisc_receive(struct tty_struct *tty, const u8 *cp,
118114 const u8 * fp , size_t count )
119115{
120116 struct serport * serport = tty -> disc_data ;
121- unsigned long flags ;
122117 unsigned int ch_flags = 0 ;
123118 int i ;
124119
125- spin_lock_irqsave ( & serport -> lock , flags );
120+ guard ( spinlock_irqsave )( & serport -> lock );
126121
127122 if (!test_bit (SERPORT_ACTIVE , & serport -> flags ))
128- goto out ;
123+ return ;
129124
130125 for (i = 0 ; i < count ; i ++ ) {
131126 if (fp ) {
@@ -146,9 +141,6 @@ static void serport_ldisc_receive(struct tty_struct *tty, const u8 *cp,
146141
147142 serio_interrupt (serport -> serio , cp [i ], ch_flags );
148143 }
149-
150- out :
151- spin_unlock_irqrestore (& serport -> lock , flags );
152144}
153145
154146/*
@@ -246,24 +238,21 @@ static int serport_ldisc_compat_ioctl(struct tty_struct *tty,
246238static void serport_ldisc_hangup (struct tty_struct * tty )
247239{
248240 struct serport * serport = tty -> disc_data ;
249- unsigned long flags ;
250241
251- spin_lock_irqsave (& serport -> lock , flags );
252- set_bit (SERPORT_DEAD , & serport -> flags );
253- spin_unlock_irqrestore (& serport -> lock , flags );
242+ scoped_guard (spinlock_irqsave , & serport -> lock )
243+ set_bit (SERPORT_DEAD , & serport -> flags );
254244
255245 wake_up_interruptible (& serport -> wait );
256246}
257247
258248static void serport_ldisc_write_wakeup (struct tty_struct * tty )
259249{
260250 struct serport * serport = tty -> disc_data ;
261- unsigned long flags ;
262251
263- spin_lock_irqsave (& serport -> lock , flags );
252+ guard (spinlock_irqsave )(& serport -> lock );
253+
264254 if (test_bit (SERPORT_ACTIVE , & serport -> flags ))
265255 serio_drv_write_wakeup (serport -> serio );
266- spin_unlock_irqrestore (& serport -> lock , flags );
267256}
268257
269258/*
0 commit comments