mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-10-31 13:29:32 +00:00 
			
		
		
		
	spl: cmn_err_once() should be usable in brace-less if else statements
Commit 11913870 (#14567) added cmn_err_once() by #define'ing a
compound statement but failed to consider usage in a single
statement brace-less if else.
Fix the problem by using the common "do {} while (0)" construct.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Attila Fülöp <attila@fueloep.org>
Closes #14629
			
			
This commit is contained in:
		
							parent
							
								
									c31bb934cd
								
							
						
					
					
						commit
						5f3611121d
					
				| @ -75,36 +75,36 @@ extern void panic(const char *, ...) | ||||
|     __attribute__((format(printf, 1, 2), __noreturn__)); | ||||
| 
 | ||||
| #define	cmn_err_once(ce, ...)				\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		cmn_err(ce, __VA_ARGS__);		\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #define	vcmn_err_once(ce, fmt, ap)			\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		vcmn_err(ce, fmt, ap);			\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #define	zcmn_err_once(zone, ce, ...)			\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		zcmn_err(zone, ce, __VA_ARGS__);	\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #define	vzcmn_err_once(zone, ce, fmt, ap)		\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		vzcmn_err(zone, ce, fmt, ap);		\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #endif /* !_ASM */ | ||||
| 
 | ||||
|  | ||||
| @ -47,19 +47,19 @@ extern void vpanic(const char *, va_list) | ||||
| #define	fm_panic	panic | ||||
| 
 | ||||
| #define	cmn_err_once(ce, ...)				\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		cmn_err(ce, __VA_ARGS__);		\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #define	vcmn_err_once(ce, fmt, ap)			\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		vcmn_err(ce, fmt, ap);			\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #endif /* SPL_CMN_ERR_H */ | ||||
|  | ||||
| @ -30,35 +30,35 @@ | ||||
| #include <atomic.h> | ||||
| 
 | ||||
| #define	cmn_err_once(ce, ...)				\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		cmn_err(ce, __VA_ARGS__);		\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #define	vcmn_err_once(ce, fmt, ap)			\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		vcmn_err(ce, fmt, ap);			\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #define	zcmn_err_once(zone, ce, ...)			\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		zcmn_err(zone, ce, __VA_ARGS__);	\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #define	vzcmn_err_once(zone, ce, fmt, ap)		\ | ||||
| {							\ | ||||
| do {							\ | ||||
| 	static volatile uint32_t printed = 0;		\ | ||||
| 	if (atomic_cas_32(&printed, 0, 1) == 0) {	\ | ||||
| 		vzcmn_err(zone, ce, fmt, ap);		\ | ||||
| 	}						\ | ||||
| } | ||||
| } while (0) | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Attila Fülöp
						Attila Fülöp