[d-kernel] [PATCH 1/2] kiosk: split kiosk_nl_send_*

Vitaly Chikunov vt на altlinux.org
Ср Авг 6 16:57:46 MSK 2025


Oleg,

On Wed, Aug 06, 2025 at 04:18:22PM +0300, mcpain at altlinux.org wrote:
> From: Oleg Solovyov <mcpain at altlinux.org>
> 
> kiosk_nl_send_msg is used within two different contexts:
> - send current kiosk mode
> - send kiosk list

Вам конечно виднее, но зачем 2 раза одно и то же в разных функциях?
Не описано с какой целью это делается.

Thanks,

> 
> So, we have to use different methods for different contexts.
> ---
>  security/kiosk/kiosk_lsm.c | 38 +++++++++++++++++++++++++++++++++++---
>  1 file changed, 35 insertions(+), 3 deletions(-)
> 
> diff --git a/security/kiosk/kiosk_lsm.c b/security/kiosk/kiosk_lsm.c
> index 18f810a1ce0f..20635af4936f 100644
> --- a/security/kiosk/kiosk_lsm.c
> +++ b/security/kiosk/kiosk_lsm.c
> @@ -148,7 +148,39 @@ static int kiosk_remove_item(struct list_head *list, char *filename,
>  	return 0;
>  }
>  
> -static int kiosk_nl_send_msg(struct sk_buff *skb, struct genl_info *info,
> +static int kiosk_nl_send_mode(struct sk_buff *skb, struct genl_info *info,
> +			     char *msg)
> +{
> +	int msg_size;
> +	int res;
> +	struct nlmsghdr *nlh;
> +	struct sk_buff *skb_out;
> +
> +	msg_size = strlen(msg) + 1;
> +	/* we put string so add space for NUL-terminator */
> +
> +	skb_out = genlmsg_new(msg_size, GFP_KERNEL);
> +	if (!skb_out)
> +		return -ENOMEM;
> +
> +	nlh = genlmsg_put_reply(skb_out, info, &genl_kiosk_family, 0,
> +				KIOSK_REPLY);
> +	if (!nlh) {
> +		nlmsg_free(skb_out);
> +		return -ENOMEM;
> +	}
> +
> +	res = nla_put_string(skb_out, KIOSK_DATA, msg);
> +	if (res) {
> +		nlmsg_free(skb_out);
> +		return res;
> +	}
> +
> +	genlmsg_end(skb_out, nlh);
> +	return genlmsg_reply(skb_out, info);
> +}
> +
> +static int kiosk_nl_send_item(struct sk_buff *skb, struct genl_info *info,
>  			     char *msg)
>  {
>  	int msg_size;
> @@ -206,7 +238,7 @@ static int kiosk_list_items(struct list_head *list, struct rw_semaphore *sem,
>  		path = "";
>  
>  	up_read(sem);
> -	return kiosk_nl_send_msg(skb, info, path);
> +	return kiosk_nl_send_item(skb, info, path);
>  }
>  
>  static int kiosk_genl_doit(struct sk_buff *skb, struct genl_info *info)
> @@ -230,7 +262,7 @@ static int kiosk_genl_doit(struct sk_buff *skb, struct genl_info *info)
>  		if (!strlen(pathbuf)) {
>  			/* we want to retrieve current mode */
>  			snprintf(buf, sizeof(buf), "%d", kiosk_mode);
> -			return kiosk_nl_send_msg(skb, info, buf);
> +			return kiosk_nl_send_mode(skb, info, buf);
>  		}
>  
>  		error = kstrtouint(pathbuf, 0, &new_mode);
> -- 
> 2.50.1
> 
> _______________________________________________
> devel-kernel mailing list
> devel-kernel at lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-kernel


Подробная информация о списке рассылки devel-kernel