[lvc-project] [PATCH 6.1 v2 2/3] scsi: aic79xx: check for non-NULL scb in ahd_handle_pkt_busfree
Fedor Pchelkin
pchelkin at ispras.ru
Mon Apr 21 13:01:39 MSK 2025
В названии всех патчей перед наименованием функции присутствует таб или
это какой-то другой артефакт..
On Mon, 21. Apr 15:16, Boris Belyavtsev wrote:
> If hardware returns invalid scbid scb could be NULL.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
> Signed-off-by: Boris Belyavtsev <bbelyavtsev at usergate.com>
> ---
> drivers/scsi/aic7xxx/aic79xx_core.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c
> index a4d5376123d3..3595a1e35a69 100644
> --- a/drivers/scsi/aic7xxx/aic79xx_core.c
> +++ b/drivers/scsi/aic7xxx/aic79xx_core.c
> @@ -2998,6 +2998,10 @@ ahd_handle_pkt_busfree(struct ahd_softc *ahd, u_int busfreetime)
> ahd_print_path(ahd, scb);
> printk("Unexpected PKT busfree condition\n");
> ahd_dump_card_state(ahd);
> + if (scb == NULL) {
> + printk("scb pointer is NULL\n");
Будет в логе запись:
scb pointer is NULL
Сомневаюсь, что это как-то позволит пользователю (и разработчику ядра,
которому он передаст логи) понять, что произошло.
Лучше с WARN_ON_ONCE. Это неожидаемое поведение, лучше о таком сообщать
громко, т.к. драйвер древний и к корректной обработке подобного вида
ситуаций не приспособлен.
> + return (1);
> + }
Вот здесь добавляется return посередине обработки какого-либо события -
быть уверенными, что драйвер или firmware в этом случае не войдут в
какое-нибудь неопределённое состояние, мы не можем. WARNING с return в
целом неплохо подходит.
> ahd_abort_scbs(ahd, SCB_GET_TARGET(ahd, scb), 'A',
> SCB_GET_LUN(scb), SCB_GET_TAG(scb),
> ROLE_INITIATOR, CAM_UNEXP_BUSFREE);
> --
> 2.43.0
More information about the lvc-project
mailing list