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.

ALSA: gus: Use guard() for mutex locks

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

As replaced with the guard(mutex), no longer used snd_gf1_mem_lock()
is dropped, too.

Only code refactoring, and no behavior change.

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

+9 -36
-1
include/sound/gus.h
··· 515 515 516 516 /* gus_mem.c */ 517 517 518 - void snd_gf1_mem_lock(struct snd_gf1_mem * alloc, int xup); 519 518 int snd_gf1_mem_xfree(struct snd_gf1_mem * alloc, struct snd_gf1_mem_block * block); 520 519 struct snd_gf1_mem_block *snd_gf1_mem_alloc(struct snd_gf1_mem * alloc, int owner, 521 520 char *name, int size, int w_16,
+3 -7
sound/isa/gus/gus_dma.c
··· 143 143 144 144 int snd_gf1_dma_init(struct snd_gus_card * gus) 145 145 { 146 - mutex_lock(&gus->dma_mutex); 146 + guard(mutex)(&gus->dma_mutex); 147 147 gus->gf1.dma_shared++; 148 - if (gus->gf1.dma_shared > 1) { 149 - mutex_unlock(&gus->dma_mutex); 148 + if (gus->gf1.dma_shared > 1) 150 149 return 0; 151 - } 152 150 gus->gf1.interrupt_handler_dma_write = snd_gf1_dma_interrupt; 153 151 gus->gf1.dma_data_pcm = 154 152 gus->gf1.dma_data_pcm_last = 155 153 gus->gf1.dma_data_synth = 156 154 gus->gf1.dma_data_synth_last = NULL; 157 - mutex_unlock(&gus->dma_mutex); 158 155 return 0; 159 156 } 160 157 ··· 159 162 { 160 163 struct snd_gf1_dma_block *block; 161 164 162 - mutex_lock(&gus->dma_mutex); 165 + guard(mutex)(&gus->dma_mutex); 163 166 gus->gf1.dma_shared--; 164 167 if (!gus->gf1.dma_shared) { 165 168 snd_dma_disable(gus->gf1.dma1); ··· 176 179 gus->gf1.dma_data_pcm_last = 177 180 gus->gf1.dma_data_synth_last = NULL; 178 181 } 179 - mutex_unlock(&gus->dma_mutex); 180 182 return 0; 181 183 } 182 184
-1
sound/isa/gus/gus_main.c
··· 447 447 EXPORT_SYMBOL(snd_gf1_mem_alloc); 448 448 EXPORT_SYMBOL(snd_gf1_mem_xfree); 449 449 EXPORT_SYMBOL(snd_gf1_mem_free); 450 - EXPORT_SYMBOL(snd_gf1_mem_lock);
+6 -27
sound/isa/gus/gus_mem.c
··· 15 15 struct snd_info_buffer *buffer); 16 16 #endif 17 17 18 - void snd_gf1_mem_lock(struct snd_gf1_mem * alloc, int xup) 19 - { 20 - if (!xup) { 21 - mutex_lock(&alloc->memory_mutex); 22 - } else { 23 - mutex_unlock(&alloc->memory_mutex); 24 - } 25 - } 26 - 27 18 static struct snd_gf1_mem_block * 28 19 snd_gf1_mem_xalloc(struct snd_gf1_mem *alloc, struct snd_gf1_mem_block *block, 29 20 const char *name) ··· 41 50 alloc->first = nblock; 42 51 else 43 52 nblock->prev->next = nblock; 44 - mutex_unlock(&alloc->memory_mutex); 45 53 return nblock; 46 54 } 47 55 pblock = pblock->next; ··· 61 71 { 62 72 if (block->share) { /* ok.. shared block */ 63 73 block->share--; 64 - mutex_unlock(&alloc->memory_mutex); 65 74 return 0; 66 75 } 67 76 if (alloc->first == block) { ··· 172 183 { 173 184 struct snd_gf1_mem_block block, *nblock; 174 185 175 - snd_gf1_mem_lock(alloc, 0); 186 + guard(mutex)(&alloc->memory_mutex); 176 187 if (share_id != NULL) { 177 188 nblock = snd_gf1_mem_share(alloc, share_id); 178 189 if (nblock != NULL) { ··· 182 193 goto __std; 183 194 } 184 195 nblock->share++; 185 - snd_gf1_mem_lock(alloc, 1); 186 196 return NULL; 187 197 } 188 198 } 189 199 __std: 190 - if (snd_gf1_mem_find(alloc, &block, size, w_16, align) < 0) { 191 - snd_gf1_mem_lock(alloc, 1); 200 + if (snd_gf1_mem_find(alloc, &block, size, w_16, align) < 0) 192 201 return NULL; 193 - } 194 202 if (share_id != NULL) 195 203 memcpy(&block.share_id, share_id, sizeof(block.share_id)); 196 204 block.owner = owner; 197 205 nblock = snd_gf1_mem_xalloc(alloc, &block, name); 198 - snd_gf1_mem_lock(alloc, 1); 199 206 return nblock; 200 207 } 201 208 202 209 int snd_gf1_mem_free(struct snd_gf1_mem * alloc, unsigned int address) 203 210 { 204 - int result; 205 211 struct snd_gf1_mem_block *block; 206 212 207 - snd_gf1_mem_lock(alloc, 0); 213 + guard(mutex)(&alloc->memory_mutex); 208 214 block = snd_gf1_mem_look(alloc, address); 209 - if (block) { 210 - result = snd_gf1_mem_xfree(alloc, block); 211 - snd_gf1_mem_lock(alloc, 1); 212 - return result; 213 - } 214 - snd_gf1_mem_lock(alloc, 1); 215 + if (block) 216 + return snd_gf1_mem_xfree(alloc, block); 215 217 return -EINVAL; 216 218 } 217 219 ··· 262 282 263 283 gus = entry->private_data; 264 284 alloc = &gus->gf1.mem_alloc; 265 - mutex_lock(&alloc->memory_mutex); 285 + guard(mutex)(&alloc->memory_mutex); 266 286 snd_iprintf(buffer, "8-bit banks : \n "); 267 287 for (i = 0; i < 4; i++) 268 288 snd_iprintf(buffer, "0x%06x (%04ik)%s", alloc->banks_8[i].address, alloc->banks_8[i].size >> 10, i + 1 < 4 ? "," : ""); ··· 306 326 } 307 327 snd_iprintf(buffer, " Total: memory = %i, used = %i, free = %i\n", 308 328 total, used, total - used); 309 - mutex_unlock(&alloc->memory_mutex); 310 329 #if 0 311 330 ultra_iprintf(buffer, " Verify: free = %i, max 8-bit block = %i, max 16-bit block = %i\n", 312 331 ultra_memory_free_size(card, &card->gf1.mem_alloc),