On 19/06/2023 03:45, Yingkun Meng wrote: >>>> + tx_data->irq = fwnode_irq_get_byname(fwnode, "tx"); >>> >>> Smatch detects that tx_data->irq and rx_data->irq are of type >>> u32(unsigned) so they can never be negative. >>> >>>> + if (tx_data->irq < 0) { >>> ^^^^^^^^ This can never be true. >>> >>> Should irq be of type 'int' instead? >>> >>>> + dev_err(&pdev->dev, "dma tx irq invalid\n"); >>>> + return tx_data->irq; >>>> + } >>>> + >>>> + rx_data->irq = fwnode_irq_get_byname(fwnode, "rx"); >>>> + if (rx_data->irq < 0) { >>> ^^^ Same problem here. >>> >>> Should irq >> >> Should 'irq' be of type int instead? >> >> As fwnode_irq_get_byname() returns a integer. >> > Yes, you are right. I will add a patch to fix the type of 'irq' to int. Run smatch and sparse on your code before posting. It would find such trivial mistakes. Best regards, Krzysztof