On Tue, Jun 02, 2020 at 05:47:39PM +0300, Andy Shevchenko wrote: > Static analyzer can not see balanced locking if the lock is acquired and > released conditionally. What static analyzer can not handle #defines like this? > context imbalance in 'uart_stop' - unexpected unlock > context imbalance in 'uart_start' - different lock contexts for basic block > context imbalance in 'uart_port_startup' - different lock contexts for basic block > context imbalance in 'uart_shutdown' - different lock contexts for basic block > context imbalance in 'uart_put_char' - different lock contexts for basic block > context imbalance in 'uart_write' - different lock contexts for basic block > context imbalance in 'uart_write_room' - different lock contexts for basic block > context imbalance in 'uart_chars_in_buffer' - different lock contexts for basic block > context imbalance in 'uart_flush_buffer' - different lock contexts for basic block > > Get rid of macros and implement their functionality in place. This will also > help to enable runtime PM in cleaner way later on. Really? I'll wait to see that happen, as it is, the macro should be just fine, your patch made things more complex. We don't write more complex code, if we can help it, just for an unnamed tool :) thanks, greg k-h