In the Linux kernel, the following vulnerability has been resolved: serial: sc16is7xx: setup GPIO controller later in probe The GPIO controller component of the sc16is7xx driver is setup too early, which can result in a race condition where another device tries to utilise the GPIO lines before the sc16is7xx device has finished initialising. This issue manifests itself as an Oops when the GPIO lines are configured: Unable to handle kernel read from unreadable memory at virtual address ... pc : sc16is7xxgpiodirectionoutput+0x68/0x108 [sc16is7xx] lr : sc16is7xxgpiodirectionoutput+0x4c/0x108 [sc16is7xx] ... Call trace: sc16is7xxgpiodirectionoutput+0x68/0x108 [sc16is7xx] gpioddirectionoutputrawcommit+0x64/0x318 gpioddirectionoutput+0xb0/0x170 creategpioled+0xec/0x198 gpioledprobe+0x16c/0x4f0 platformdrvprobe+0x5c/0xb0 reallyprobe+0xe8/0x448 driverprobedevice+0xe8/0x138 _deviceattachdriver+0x94/0x118 busforeachdrv+0x8c/0xe0 _deviceattach+0x100/0x1b8 deviceinitialprobe+0x28/0x38 busprobedevice+0xa4/0xb0 deferredprobeworkfunc+0x90/0xe0 processonework+0x1c4/0x480 workerthread+0x54/0x430 kthread+0x138/0x150 retfromfork+0x10/0x1c This patch moves the setup of the GPIO controller functions to later in the probe function, ensuring the sc16is7xx device has already finished initialising by the time other devices try to make use of the GPIO lines. The error handling has also been reordered to reflect the new initialisation order.