linux/drivers/block/drbd
Xiaomeng Tong ae4d37b5df drbd: fix an invalid memory access caused by incorrect use of list iterator
The bug is here:
	idr_remove(&connection->peer_devices, vnr);

If the previous for_each_connection() don't exit early (no goto hit
inside the loop), the iterator 'connection' after the loop will be a
bogus pointer to an invalid structure object containing the HEAD
(&resource->connections). As a result, the use of 'connection' above
will lead to a invalid memory access (including a possible invalid free
as idr_remove could call free_layer).

The original intention should have been to remove all peer_devices,
but the following lines have already done the work. So just remove
this line and the unneeded label, to fix this bug.

Cc: stable@vger.kernel.org
Fixes: c06ece6ba6 ("drbd: Turn connection->volumes into connection->peer_devices")
Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com>
Reviewed-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
Reviewed-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-04-06 13:07:52 -06:00
..
drbd_actlog.c block: pass a block_device and opf to bio_alloc_bioset 2022-02-02 07:49:59 -07:00
drbd_bitmap.c block: pass a block_device and opf to bio_alloc_bioset 2022-02-02 07:49:59 -07:00
drbd_debugfs.c block: drbd: no need to check return value of debugfs_create functions 2019-06-20 03:28:16 -06:00
drbd_debugfs.h block: drbd: no need to check return value of debugfs_create functions 2019-06-20 03:28:16 -06:00
drbd_int.h drbd: Fix five use after free bugs in get_initial_state 2022-04-06 13:07:50 -06:00
drbd_interval.c block: drbd: drbd_interval: Demote some kernel-doc abuses and fix another header 2021-04-06 09:21:53 -06:00
drbd_interval.h
drbd_main.c drbd: fix an invalid memory access caused by incorrect use of list iterator 2022-04-06 13:07:52 -06:00
drbd_nl.c drbd: Fix five use after free bugs in get_initial_state 2022-04-06 13:07:50 -06:00
drbd_nla.c netlink: make validation more configurable for future strictness 2019-04-27 17:07:21 -04:00
drbd_nla.h
drbd_proc.c drbd: remove a bogus bdi_rw_congested call 2020-07-08 17:05:53 -06:00
drbd_protocol.h drbd: Use struct_group() to zero algs 2021-12-13 16:31:24 -07:00
drbd_receiver.c SCSI misc on 20220324 2022-03-24 19:37:53 -07:00
drbd_req.c for-5.18/drivers-2022-04-01 2022-04-01 16:26:57 -07:00
drbd_req.h drbd: remove drbd_req_make_private_bio 2021-01-27 09:51:48 -07:00
drbd_state_change.h drbd: Fix five use after free bugs in get_initial_state 2022-04-06 13:07:50 -06:00
drbd_state.c drbd: Fix five use after free bugs in get_initial_state 2022-04-06 13:07:50 -06:00
drbd_state.h drbd: Change drbd_request_detach_interruptible's return type to int 2018-12-20 09:51:31 -07:00
drbd_strings.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 91 2019-05-24 17:37:53 +02:00
drbd_strings.h
drbd_vli.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 91 2019-05-24 17:37:53 +02:00
drbd_worker.c SCSI misc on 20220324 2022-03-24 19:37:53 -07:00
Kconfig Replace HTTP links with HTTPS ones: DRBD driver 2020-07-05 14:16:44 -06:00
Makefile