Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Input: ad7877 - use guard notation when acquiring mutexes/locks

This makes the code more compact and error handling more robust.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

+12 -20
+12 -20
drivers/input/touchscreen/ad7877.c
··· 376 376 static void ad7877_timer(struct timer_list *t) 377 377 { 378 378 struct ad7877 *ts = timer_container_of(ts, t, timer); 379 - unsigned long flags; 380 379 381 - spin_lock_irqsave(&ts->lock, flags); 380 + guard(spinlock_irqsave)(&ts->lock); 382 381 ad7877_ts_event_release(ts); 383 - spin_unlock_irqrestore(&ts->lock, flags); 384 382 } 385 383 386 384 static irqreturn_t ad7877_irq(int irq, void *handle) 387 385 { 388 386 struct ad7877 *ts = handle; 389 - unsigned long flags; 390 387 int error; 391 388 392 389 error = spi_sync(ts->spi, &ts->msg); ··· 392 395 goto out; 393 396 } 394 397 395 - spin_lock_irqsave(&ts->lock, flags); 396 - error = ad7877_process_data(ts); 397 - if (!error) 398 + scoped_guard(spinlock_irqsave, &ts->lock) { 399 + error = ad7877_process_data(ts); 400 + if (error) 401 + goto out; 402 + 398 403 mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT); 399 - spin_unlock_irqrestore(&ts->lock, flags); 404 + } 400 405 401 406 out: 402 407 return IRQ_HANDLED; ··· 408 409 { 409 410 struct ad7877 *ts = data; 410 411 411 - mutex_lock(&ts->mutex); 412 + guard(mutex)(&ts->mutex); 412 413 413 414 if (!ts->disabled) { 414 415 ts->disabled = true; ··· 422 423 * We know the chip's in lowpower mode since we always 423 424 * leave it that way after every request 424 425 */ 425 - 426 - mutex_unlock(&ts->mutex); 427 426 } 428 427 429 428 static void ad7877_enable(struct ad7877 *ts) 430 429 { 431 - mutex_lock(&ts->mutex); 430 + guard(mutex)(&ts->mutex); 432 431 433 432 if (ts->disabled) { 434 433 ts->disabled = false; 435 434 enable_irq(ts->spi->irq); 436 435 } 437 - 438 - mutex_unlock(&ts->mutex); 439 436 } 440 437 441 438 #define SHOW(name) static ssize_t \ ··· 504 509 if (error) 505 510 return error; 506 511 507 - mutex_lock(&ts->mutex); 512 + guard(mutex)(&ts->mutex); 508 513 ts->dac = val & 0xFF; 509 514 ad7877_write(ts->spi, AD7877_REG_DAC, (ts->dac << 4) | AD7877_DAC_CONF); 510 - mutex_unlock(&ts->mutex); 511 515 512 516 return count; 513 517 } ··· 533 539 if (error) 534 540 return error; 535 541 536 - mutex_lock(&ts->mutex); 542 + guard(mutex)(&ts->mutex); 537 543 ts->gpio3 = !!val; 538 544 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA | 539 545 (ts->gpio4 << 4) | (ts->gpio3 << 5)); 540 - mutex_unlock(&ts->mutex); 541 546 542 547 return count; 543 548 } ··· 563 570 if (error) 564 571 return error; 565 572 566 - mutex_lock(&ts->mutex); 573 + guard(mutex)(&ts->mutex); 567 574 ts->gpio4 = !!val; 568 575 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA | 569 576 (ts->gpio4 << 4) | (ts->gpio3 << 5)); 570 - mutex_unlock(&ts->mutex); 571 577 572 578 return count; 573 579 }