[CRIU] [PATCH 2/5] service: set one exit point

Ruslan Kuprieiev kupruser at gmail.com
Fri Sep 20 15:28:04 EDT 2013


On 09/20/2013 11:16 PM, Andrew Vagin wrote:
> On Fri, Sep 20, 2013 at 11:12:07PM +0400, Ruslan Kuprieiev wrote:
>> On 09/19/2013 02:37 PM, Andrey Vagin wrote:
>>> Cc: Ruslan Kuprieiev <kupruser at gmail.com>
>>> Signed-off-by: Andrey Vagin <avagin at openvz.org>
>>> ---
>>>   cr-service.c | 19 ++++++++++++-------
>>>   1 file changed, 12 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/cr-service.c b/cr-service.c
>>> index 1d6f5a6..c385549 100644
>>> --- a/cr-service.c
>>> +++ b/cr-service.c
>>> @@ -202,7 +202,7 @@ err:
>>>   int cr_service(bool daemon_mode)
>>>   {
>>> -	int server_fd;
>>> +	int server_fd = -1;
>>>   	int child_pid;
>>>   	struct sockaddr_un server_addr;
>>> @@ -218,7 +218,7 @@ int cr_service(bool daemon_mode)
>>>   	server_fd = socket(AF_LOCAL, SOCK_SEQPACKET, 0);
>>>   	if (server_fd == -1) {
>>>   		pr_perror("Can't initialize service socket.");
>>> -		return -1;
>>> +		goto err;
>>>   	}
>>>   	memset(&server_addr, 0, sizeof(server_addr));
>>> @@ -239,7 +239,7 @@ int cr_service(bool daemon_mode)
>>>   	if (bind(server_fd, (struct sockaddr *) &server_addr,
>>>   					server_addr_len) == -1) {
>>>   		pr_perror("Can't bind.");
>>> -		return -1;
>>> +		goto err;
>>>   	}
>>>   	pr_info("The service socket is bound to %s\n", server_addr.sun_path);
>>> @@ -247,18 +247,18 @@ int cr_service(bool daemon_mode)
>>>   	/* change service socket permissions, so anyone can connect to it */
>>>   	if (chmod(server_addr.sun_path, 0666)) {
>>>   		pr_perror("Can't change permissions of the service socket.");
>>> -		return -1;
>>> +		goto err;
>>>   	}
>>>   	if (listen(server_fd, 16) == -1) {
>>>   		pr_perror("Can't listen for socket connections.");
>>> -		return -1;
>>> +		goto err;
>>>   	}
>>>   	if (daemon_mode) {
>>>   		if (daemon(0, 0) == -1) {
>>>   			pr_perror("Can't run service server in the background");
>>> -			return -errno;
>>> +			goto err;
>>>   		}
>>>   	}
>>> @@ -290,5 +290,10 @@ int cr_service(bool daemon_mode)
>>>   		}
>>>   	}
>>> -	return 0;
>>> +err:
>>> +	close_safe(&server_fd);
>>> +
>>> +	exit(1);
>>> +
>>> +	return -1;
>> Why do we need both exit and return?
>> Will not exit() terminate the process?
> exit() terminates the process, but this function must return anything.

I didn't get that...Who will get returned value, if exit() terminates 
the whole process?

> We can remove this exit().
>
> Can you check that this series breaks nothing?
Sure=).
Would it be ok, if I will include this series in another patch and add 
"Original-patch-by:" ?
> Thanks
>
>>>   }



More information about the CRIU mailing list