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

ALSA: ac97: Use guard() for mutex locks

Replace the manual mutex lock/unlock pairs with guard() for code
simplification.

Only code refactoring, and no behavior change.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20250829144342.4290-2-tiwai@suse.de

+18 -36
+10 -22
sound/pci/ac97/ac97_codec.c
··· 326 326 { 327 327 if (!snd_ac97_valid_reg(ac97, reg)) 328 328 return; 329 - mutex_lock(&ac97->reg_mutex); 329 + guard(mutex)(&ac97->reg_mutex); 330 330 ac97->regs[reg] = value; 331 331 ac97->bus->ops->write(ac97, reg, value); 332 332 set_bit(reg, ac97->reg_accessed); 333 - mutex_unlock(&ac97->reg_mutex); 334 333 } 335 334 336 335 EXPORT_SYMBOL(snd_ac97_write_cache); ··· 352 353 353 354 if (!snd_ac97_valid_reg(ac97, reg)) 354 355 return -EINVAL; 355 - mutex_lock(&ac97->reg_mutex); 356 + guard(mutex)(&ac97->reg_mutex); 356 357 change = ac97->regs[reg] != value; 357 358 if (change) { 358 359 ac97->regs[reg] = value; 359 360 ac97->bus->ops->write(ac97, reg, value); 360 361 } 361 362 set_bit(reg, ac97->reg_accessed); 362 - mutex_unlock(&ac97->reg_mutex); 363 363 return change; 364 364 } 365 365 ··· 379 381 */ 380 382 int snd_ac97_update_bits(struct snd_ac97 *ac97, unsigned short reg, unsigned short mask, unsigned short value) 381 383 { 382 - int change; 383 - 384 384 if (!snd_ac97_valid_reg(ac97, reg)) 385 385 return -EINVAL; 386 - mutex_lock(&ac97->reg_mutex); 387 - change = snd_ac97_update_bits_nolock(ac97, reg, mask, value); 388 - mutex_unlock(&ac97->reg_mutex); 389 - return change; 386 + guard(mutex)(&ac97->reg_mutex); 387 + return snd_ac97_update_bits_nolock(ac97, reg, mask, value); 390 388 } 391 389 392 390 EXPORT_SYMBOL(snd_ac97_update_bits); ··· 410 416 int change; 411 417 unsigned short old, new, cfg; 412 418 413 - mutex_lock(&ac97->page_mutex); 419 + guard(mutex)(&ac97->page_mutex); 414 420 old = ac97->spec.ad18xx.pcmreg[codec]; 415 421 new = (old & ~mask) | (value & mask); 416 422 change = old != new; 417 423 if (change) { 418 - mutex_lock(&ac97->reg_mutex); 424 + guard(mutex)(&ac97->reg_mutex); 419 425 cfg = snd_ac97_read_cache(ac97, AC97_AD_SERIAL_CFG); 420 426 ac97->spec.ad18xx.pcmreg[codec] = new; 421 427 /* select single codec */ ··· 427 433 /* select all codecs */ 428 434 ac97->bus->ops->write(ac97, AC97_AD_SERIAL_CFG, 429 435 cfg | 0x7000); 430 - mutex_unlock(&ac97->reg_mutex); 431 436 } 432 - mutex_unlock(&ac97->page_mutex); 433 437 return change; 434 438 } 435 439 ··· 708 716 { 709 717 struct snd_ac97 *ac97 = snd_kcontrol_chip(kcontrol); 710 718 711 - mutex_lock(&ac97->reg_mutex); 719 + guard(mutex)(&ac97->reg_mutex); 712 720 ucontrol->value.iec958.status[0] = ac97->spdif_status & 0xff; 713 721 ucontrol->value.iec958.status[1] = (ac97->spdif_status >> 8) & 0xff; 714 722 ucontrol->value.iec958.status[2] = (ac97->spdif_status >> 16) & 0xff; 715 723 ucontrol->value.iec958.status[3] = (ac97->spdif_status >> 24) & 0xff; 716 - mutex_unlock(&ac97->reg_mutex); 717 724 return 0; 718 725 } 719 726 ··· 751 760 } 752 761 } 753 762 754 - mutex_lock(&ac97->reg_mutex); 763 + guard(mutex)(&ac97->reg_mutex); 755 764 change = ac97->spdif_status != new; 756 765 ac97->spdif_status = new; 757 766 ··· 785 794 snd_ac97_update_bits_nolock(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF); /* turn on again */ 786 795 } 787 796 } 788 - mutex_unlock(&ac97->reg_mutex); 789 797 790 798 return change; 791 799 } ··· 801 811 802 812 value = (ucontrol->value.integer.value[0] & mask); 803 813 804 - mutex_lock(&ac97->reg_mutex); 814 + guard(mutex)(&ac97->reg_mutex); 805 815 mask <<= shift; 806 816 value <<= shift; 807 817 old = snd_ac97_read_cache(ac97, reg); ··· 815 825 if (extst & AC97_EA_SPDIF) 816 826 snd_ac97_update_bits_nolock(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF); /* turn on again */ 817 827 } 818 - mutex_unlock(&ac97->reg_mutex); 819 828 return change; 820 829 } 821 830 ··· 925 936 struct snd_ac97 *ac97 = snd_kcontrol_chip(kcontrol); 926 937 int codec = kcontrol->private_value & 3; 927 938 928 - mutex_lock(&ac97->page_mutex); 939 + guard(mutex)(&ac97->page_mutex); 929 940 ucontrol->value.integer.value[0] = 31 - ((ac97->spec.ad18xx.pcmreg[codec] >> 8) & 31); 930 941 ucontrol->value.integer.value[1] = 31 - ((ac97->spec.ad18xx.pcmreg[codec] >> 0) & 31); 931 - mutex_unlock(&ac97->page_mutex); 932 942 return 0; 933 943 } 934 944
+3 -6
sound/pci/ac97/ac97_patch.c
··· 54 54 unsigned short page_save; 55 55 int ret; 56 56 57 - mutex_lock(&ac97->page_mutex); 57 + guard(mutex)(&ac97->page_mutex); 58 58 page_save = snd_ac97_read(ac97, AC97_INT_PAGING) & AC97_PAGE_MASK; 59 59 snd_ac97_update_bits(ac97, AC97_INT_PAGING, AC97_PAGE_MASK, page); 60 60 ret = snd_ac97_update_bits(ac97, reg, mask, value); 61 61 snd_ac97_update_bits(ac97, AC97_INT_PAGING, AC97_PAGE_MASK, page_save); 62 - mutex_unlock(&ac97->page_mutex); /* unlock paging */ 63 62 return ret; 64 63 } 65 64 ··· 975 976 struct snd_ac97 *ac97 = snd_kcontrol_chip(kcontrol); 976 977 int err; 977 978 978 - mutex_lock(&ac97->page_mutex); 979 + guard(mutex)(&ac97->page_mutex); 979 980 snd_ac97_write(ac97, AC97_SIGMATEL_BIAS1, 0xabba); 980 981 err = snd_ac97_update_bits(ac97, AC97_SIGMATEL_BIAS2, 0x0010, 981 982 (ucontrol->value.integer.value[0] & 1) << 4); 982 983 snd_ac97_write(ac97, AC97_SIGMATEL_BIAS1, 0); 983 - mutex_unlock(&ac97->page_mutex); 984 984 return err; 985 985 } 986 986 ··· 3697 3699 unsigned short datpag, uaj; 3698 3700 struct snd_ac97 *pac97 = snd_kcontrol_chip(kcontrol); 3699 3701 3700 - mutex_lock(&pac97->page_mutex); 3702 + guard(mutex)(&pac97->page_mutex); 3701 3703 3702 3704 datpag = snd_ac97_read(pac97, AC97_INT_PAGING) & AC97_PAGE_MASK; 3703 3705 snd_ac97_update_bits(pac97, AC97_INT_PAGING, AC97_PAGE_MASK, 0); ··· 3706 3708 vt1618_uaj[kcontrol->private_value].mask; 3707 3709 3708 3710 snd_ac97_update_bits(pac97, AC97_INT_PAGING, AC97_PAGE_MASK, datpag); 3709 - mutex_unlock(&pac97->page_mutex); 3710 3711 3711 3712 ucontrol->value.enumerated.item[0] = uaj >> 3712 3713 vt1618_uaj[kcontrol->private_value].shift;
+1 -2
sound/pci/ac97/ac97_pcm.c
··· 192 192 mask = AC97_SC_SPSR_MASK; 193 193 } 194 194 195 - mutex_lock(&ac97->reg_mutex); 195 + guard(mutex)(&ac97->reg_mutex); 196 196 old = snd_ac97_read(ac97, reg) & mask; 197 197 if (old != bits) { 198 198 snd_ac97_update_bits_nolock(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0); ··· 217 217 ac97->spdif_status = sbits; 218 218 } 219 219 snd_ac97_update_bits_nolock(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF); 220 - mutex_unlock(&ac97->reg_mutex); 221 220 return 0; 222 221 } 223 222
+4 -6
sound/pci/ac97/ac97_proc.c
··· 329 329 { 330 330 struct snd_ac97 *ac97 = entry->private_data; 331 331 332 - mutex_lock(&ac97->page_mutex); 332 + guard(mutex)(&ac97->page_mutex); 333 333 if ((ac97->id & 0xffffff40) == AC97_ID_AD1881) { // Analog Devices AD1881/85/86 334 334 int idx; 335 335 for (idx = 0; idx < 3; idx++) ··· 355 355 } else { 356 356 snd_ac97_proc_read_main(ac97, buffer, 0); 357 357 } 358 - mutex_unlock(&ac97->page_mutex); 359 358 } 360 359 361 360 #ifdef CONFIG_SND_DEBUG ··· 364 365 struct snd_ac97 *ac97 = entry->private_data; 365 366 char line[64]; 366 367 unsigned int reg, val; 367 - mutex_lock(&ac97->page_mutex); 368 + 369 + guard(mutex)(&ac97->page_mutex); 368 370 while (!snd_info_get_line(buffer, line, sizeof(line))) { 369 371 if (sscanf(line, "%x %x", &reg, &val) != 2) 370 372 continue; ··· 373 373 if (reg < 0x80 && (reg & 1) == 0 && val <= 0xffff) 374 374 snd_ac97_write_cache(ac97, reg, val); 375 375 } 376 - mutex_unlock(&ac97->page_mutex); 377 376 } 378 377 #endif 379 378 ··· 391 392 { 392 393 struct snd_ac97 *ac97 = entry->private_data; 393 394 394 - mutex_lock(&ac97->page_mutex); 395 + guard(mutex)(&ac97->page_mutex); 395 396 if ((ac97->id & 0xffffff40) == AC97_ID_AD1881) { // Analog Devices AD1881/85/86 396 397 397 398 int idx; ··· 407 408 } else { 408 409 snd_ac97_proc_regs_read_main(ac97, buffer, 0); 409 410 } 410 - mutex_unlock(&ac97->page_mutex); 411 411 } 412 412 413 413 void snd_ac97_proc_init(struct snd_ac97 * ac97)