Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9721ed2 authored by Jesper Juhl's avatar Jesper Juhl Committed by John W. Linville
Browse files

bcma: Fix mem leak in bcma_bus_scan()



bcma_bus_scan() leaks 'struct bcma_device' bytes if
bcma_get_next_core() returns error.

Restructure the code so we always kfree() the memory we allocate to
the variable 'core' before it goes out of scope.

Signed-off-by: default avatarJesper Juhl <jj@chaosbits.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 6f01fd6e
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -399,15 +399,18 @@ int bcma_bus_scan(struct bcma_bus *bus)
		core->bus = bus;

		err = bcma_get_next_core(bus, &eromptr, NULL, core_num, core);
		if (err < 0) {
			kfree(core);
			if (err == -ENODEV) {
				core_num++;
				continue;
		} else if (err == -ENXIO)
			} else if (err == -ENXIO) {
				continue;
		else if (err == -ESPIPE)
			} else if (err == -ESPIPE) {
				break;
		else if (err < 0)
			}
			return err;
		}

		core->core_index = core_num++;
		bus->nr_cores++;