Olaf,

I am cleaning up the code based on your feedback. By the time I am done with my 
cleanup, I doubt if
this patch would apply. Do you mind if I were to include your changes here as 
part of my cleanup?

Thank you,

K. Y

> -----Original Message-----
> From: Olaf Hering [mailto:o...@aepfle.de]
> Sent: Thursday, January 16, 2014 2:49 AM
> To: KY Srinivasan
> Cc: gre...@linuxfoundation.org; linux-kernel@vger.kernel.org;
> de...@linuxdriverproject.org; a...@canonical.com; jasow...@redhat.com
> Subject: Re: [PATCH V2 1/1] Drivers: hv: Implement the file copy service
> 
> On Tue, Jan 14, K. Y. Srinivasan wrote:
> 
> > Implement the file copy service for Linux guests on Hyper-V. This permits 
> > the
> > host to copy a file (over VMBUS) into the guest. This facility is part of
> > "guest integration services" supported on the Windows platform.
> > Here is a link that provides additional details on this functionality:
> 
> The change below fixes some warnings in the daemon code.
> Compile tested only.
> I also think the newlines in some of the syslog calls should be removed.
> 
> Olaf
> 
> 
> hv_fcopy_daemon.c: In function 'hv_start_fcopy':
> hv_fcopy_daemon.c:44:3: warning: format '%s' expects argument of type 'char
> *', but argument 3 has type '__u16 *' [-Wformat=]
>    smsg->file_name);
>    ^
> hv_fcopy_daemon.c:44:3: warning: format '%s' expects argument of type 'char
> *', but argument 5 has type '__u16 *' [-Wformat=]
> hv_fcopy_daemon.c:57:6: warning: format '%s' expects argument of type 'char
> *', but argument 3 has type '__u16 *' [-Wformat=]
>       errno, strerror(errno));
>       ^
> hv_fcopy_daemon.c:61:4: warning: format '%s' expects argument of type 'char
> *', but argument 3 has type '__u16 *' [-Wformat=]
>     syslog(LOG_ERR, "Invalid path: %s\n", smsg->path_name);
>     ^
> hv_fcopy_daemon.c: In function 'main':
> hv_fcopy_daemon.c:117:8: warning: ignoring return value of 'daemon', declared
> with attribute warn_unused_result [-Wunused-result]
>   daemon(1, 0);
>         ^
> hv_fcopy_daemon.c:132:7: warning: ignoring return value of 'write', declared
> with attribute warn_unused_result [-Wunused-result]
>   write(fcopy_fd, &version, sizeof(int));
>        ^
> hv_fcopy_daemon.c:171:9: warning: ignoring return value of 'pwrite', declared
> with attribute warn_unused_result [-Wunused-result]
>    pwrite(fcopy_fd, &error, sizeof(int), 0);
>          ^
> 
> Signed-off-by: Olaf Hering <o...@aepfle.de>
> 
> diff --git a/tools/hv/hv_fcopy_daemon.c b/tools/hv/hv_fcopy_daemon.c
> index c0e5c90..d1fadb7 100644
> --- a/tools/hv/hv_fcopy_daemon.c
> +++ b/tools/hv/hv_fcopy_daemon.c
> @@ -35,14 +35,14 @@
>  #include <dirent.h>
> 
>  static int target_fd;
> -char target_fname[W_MAX_PATH];
> +static char target_fname[W_MAX_PATH];
> 
>  static int hv_start_fcopy(struct hv_start_fcopy *smsg)
>  {
>       int error = HV_E_FAIL;
> 
> -     sprintf(target_fname, "%s%s%s", smsg->path_name, "/",
> -             smsg->file_name);
> +     snprintf(target_fname, sizeof(target_fname), "%s/%s",
> +                     (char *)smsg->path_name, (char*)smsg->file_name);
> 
>       syslog(LOG_INFO, "Target file name: %s\n", target_fname);
>       /*
> @@ -54,12 +54,12 @@ static int hv_start_fcopy(struct hv_start_fcopy *smsg)
>                       if (mkdir((char *)smsg->path_name, 0755)) {
>                               syslog(LOG_ERR,
>                                       "Failed to create '%s'; error: %d %s\n",
> -                                     smsg->path_name,
> +                                     (char *)smsg->path_name,
>                                       errno, strerror(errno));
>                               goto done;
>                       }
>               } else {
> -                     syslog(LOG_ERR, "Invalid path: %s\n", smsg-
> >path_name);
> +                     syslog(LOG_ERR, "Invalid path: %s", (char *)smsg-
> >path_name);
>                       goto done;
>               }
>       }
> @@ -115,7 +115,8 @@ int main(void)
>       char *buffer[4096 * 2];
>       struct hv_fcopy_hdr *in_msg;
> 
> -     daemon(1, 0);
> +     if (daemon(1, 0))
> +             return 1;
>       openlog("HV_FCOPY", 0, LOG_USER);
>       syslog(LOG_INFO, "HV_FCOPY starting; pid is:%d", getpid());
> 
> @@ -130,7 +131,10 @@ int main(void)
>       /*
>        * Register with the kernel.
>        */
> -     write(fcopy_fd, &version, sizeof(int));
> +     if (write(fcopy_fd, &version, sizeof(int)) != sizeof(int)) {
> +             syslog(LOG_ERR, "write failed: %s",strerror(errno));
> +             exit(EXIT_FAILURE);
> +     }
> 
>       while (1) {
>               /*
> @@ -169,6 +173,9 @@ int main(void)
> 
>               }
> 
> -             pwrite(fcopy_fd, &error, sizeof(int), 0);
> +             if (pwrite(fcopy_fd, &error, sizeof(int), 0) != sizeof(int)) {
> +                     syslog(LOG_ERR, "pwrite failed: %s",strerror(errno));
> +                     exit(EXIT_FAILURE);
> +             }
>       }
>  }
N�����r��y����b�X��ǧv�^�)޺{.n�+����{����zX����ܨ}���Ơz�&j:+v�������zZ+��+zf���h���~����i���z��w���?�����&�)ߢf��^jǫy�m��@A�a���
0��h���i

Reply via email to