04.08.2020, 17:33, "Guenter Roeck" <linux@xxxxxxxxxxxx>: > On 8/4/20 4:50 AM, Evgeny Novikov wrote: >> sis5595_pci_probe() registers platform driver callbacks and just then >> initializes global pointer variable s_bridge. sis5595_probe() may >> dereference it before this happens that can result in null pointer >> dereference. > > sis5595_probe() is only called after the device is registered, > which happens in sis5595_device_add() after s_bridge is set. This is > a southbridge, so there won't be any hot insertion/removal events. > Thank you for this hint. We need to tune our models appropriately. >> We can not swap registration of platform driver callbacks with >> initialization of s_bridge since sm_sis5595_exit() assumes the >> current order. Perhaps it has sense to implement a pci_driver.remove >> callback that will take care about deregistration of platform driver >> callbacks. > > Agreed regarding the remove function. However, given the age of the chip, > I'd rather remove the driver than spending time on cleanup efforts. > This looks like a perfect candidate for depreciation. > This is completely up to you. Anyway the driver does not have the bug. Best regards, Evgeny > Guenter