From 30a72d9c056c8f96640a6b9cda4f458311d4424e Mon Sep 17 00:00:00 2001 From: Scott Mayhew Date: Sat, 29 May 2021 13:43:52 -0400 Subject: gssd: deal with failed thread creation If we fail to create a thread to handle an upcall, we still need to do a downcall to tell the kernel about the failure, otherwise the process that is trying to establish gss credentials will hang. This patch shifts the thread creation down a level in the call chain so now the main thread does a little more work up front (reading & parsing the data from the pipefs file) so it has the info it needs to be able to do the error downcall. Signed-off-by: Scott Mayhew Signed-off-by: Steve Dickson --- utils/gssd/gssd.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'utils/gssd/gssd.h') diff --git a/utils/gssd/gssd.h b/utils/gssd/gssd.h index 1e8c58d..6d53647 100644 --- a/utils/gssd/gssd.h +++ b/utils/gssd/gssd.h @@ -84,14 +84,17 @@ struct clnt_info { struct clnt_upcall_info { struct clnt_info *clp; - char lbuf[RPC_CHAN_BUF_SIZE]; - int lbuflen; uid_t uid; + int fd; + char *srchost; + char *target; + char *service; }; -void handle_krb5_upcall(struct clnt_upcall_info *clp); -void handle_gssd_upcall(struct clnt_upcall_info *clp); +void handle_krb5_upcall(struct clnt_info *clp); +void handle_gssd_upcall(struct clnt_info *clp); void free_upcall_info(struct clnt_upcall_info *info); +void gssd_free_client(struct clnt_info *clp); #endif /* _RPC_GSSD_H_ */ -- cgit v1.2.1