[lvc-project] [PATCH 4/4] gntdev: Unchecked finction result

Fedor Pchelkin pchelkin at ispras.ru
Fri Mar 15 16:22:34 MSK 2024


On Thu, 29. Feb 16:31, Andrey Shumilin wrote:
> The dma_coerce_mask_and_coherent function may refuse
> to apply a mask due to incorrectly passed parameters.
> But since this function returns the error -EIO, this
> is an abnormal situation and the error must be written to the log.
> 
> Signed-off-by: Andrey Shumilin <shum.sdl at nppct.ru>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.

Здесь также следует подправить название патча. Весь процесс подробно описан
в документации [1], [2]. Если есть непонятные места, пожалуйста
спрашивайте.

Строчку с `Found by` следует ставить над своей подписью Signed-off-by, при
этом отделив еще одной пустой строкой. Для примеров смотрите
`git log --grep="Found by Linux Verification Center"`.

Если патч исправляет ошибку в ядре, то обычно его снабжают тегом
`Fixes: <pretty-commit-hash>`, где указывают виновный коммит. Также в
документации всё описано.

> ---
>  drivers/xen/gntdev.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c
> index 61faea1f0663..8a448dbbca86 100644
> --- a/drivers/xen/gntdev.c
> +++ b/drivers/xen/gntdev.c
> @@ -597,7 +597,8 @@ static int gntdev_open(struct inode *inode, struct file *flip)
>  	flip->private_data = priv;
>  #ifdef CONFIG_XEN_GRANT_DMA_ALLOC
>  	priv->dma_dev = gntdev_miscdev.this_device;
> -	dma_coerce_mask_and_coherent(priv->dma_dev, DMA_BIT_MASK(64));
> +	if (dma_coerce_mask_and_coherent(priv->dma_dev, DMA_BIT_MASK(64)) == -EIO)
> +		printk(KERN_INFO "The mask was applied unsuccessfully");

Использование printk() напрямую не рекомендуется в новом коде ядра. В этом
файле для вывода отладочной информации везде используется pr_debug().
Поэтому сообщение об ошибке можно вывести, например, с помощью pr_err().

Также остается открытым вопрос, стоит ли при ошибке наложения DMA-маски
возвращаться из gntdev_open() с ошибкой, или достаточно только печати в
лог.

>  #endif
>  	pr_debug("priv %p\n", priv);
>  
> -- 
> 2.30.2
> 

[1]: https://docs.kernel.org/process/submitting-patches.html#describe-your-changes
[2]: https://docs.kernel.org/process/submitting-patches.html#the-canonical-patch-format




More information about the lvc-project mailing list