From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.1 From: mcpain@altlinux.org To: devel-kernel@lists.altlinux.org Date: Wed, 6 Aug 2025 16:18:22 +0300 Message-ID: <8c108cab67d36ddb4ac309ce32ffb186201ead3a.1754485062.git.mcpain@altlinux.org> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [d-kernel] [PATCH 1/2] kiosk: split kiosk_nl_send_* X-BeenThere: devel-kernel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux kernel packages development List-Id: ALT Linux kernel packages development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Aug 2025 13:18:36 -0000 Archived-At: List-Archive: List-Post: From: Oleg Solovyov kiosk_nl_send_msg is used within two different contexts: - send current kiosk mode - send kiosk list 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