open-vm-tools/fsutil-aligned.patch
Ravindra Kumar ecd814a373 Updated *-aligned.patch files with more tweaks.
Filed a regression in readdir operation in dir-aligned.patch.
2019-02-12 18:38:53 -08:00

116 lines
4.0 KiB
Diff

--- open-vm-tools-10.3.0-8931395-orig/vmhgfs-fuse/fsutil.c 2018-06-23 03:03:28.000000000 -0700
+++ open-vm-tools-10.3.0-8931395/vmhgfs-fuse/fsutil.c 2019-02-11 18:51:48.527005190 -0800
@@ -1,5 +1,5 @@
/*********************************************************
- * Copyright (C) 2013 VMware, Inc. All rights reserved.
+ * Copyright (C) 2013,2019 VMware, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
@@ -189,8 +189,6 @@
size_t reqBufferSize;
size_t reqSize;
int result = 0;
- char *fileName = NULL;
- uint32 *fileNameLength = NULL;
ASSERT(attr);
ASSERT(req);
ASSERT(path);
@@ -204,8 +202,6 @@
/* Fill out the request packet. */
requestV3->hints = 0;
- fileName = requestV3->fileName.name;
- fileNameLength = &requestV3->fileName.length;
requestV3->fileName.flags = 0;
requestV3->fileName.fid = HGFS_INVALID_HANDLE;
requestV3->fileName.caseType = HGFS_FILE_NAME_CASE_SENSITIVE;
@@ -213,6 +209,19 @@
requestV3->reserved = 0;
reqSize = sizeof(*requestV3) + HgfsGetRequestHeaderSize();
reqBufferSize = HGFS_NAME_BUFFER_SIZET(HGFS_LARGE_PACKET_MAX, reqSize);
+ if (requestV3->fileName.name != NULL) {
+ /* Convert to CP name. */
+ result = CPName_ConvertTo(path,
+ reqBufferSize,
+ requestV3->fileName.name);
+ LOG(8, ("Converted path %s\n", requestV3->fileName.name));
+ if (result < 0) {
+ LOG(8, ("CP conversion failed.\n"));
+ result = -EINVAL;
+ goto out;
+ }
+ requestV3->fileName.length = result;
+ }
break;
}
@@ -223,20 +232,42 @@
requestV2 = (HgfsRequestGetattrV2 *)(HGFS_REQ_PAYLOAD(req));
requestV2->hints = 0;
- fileName = requestV2->fileName.name;
- fileNameLength = &requestV2->fileName.length;
reqSize = sizeof *requestV2;
reqBufferSize = HGFS_NAME_BUFFER_SIZE(HGFS_LARGE_PACKET_MAX, requestV2);
+ if (requestV2->fileName.name != NULL) {
+ /* Convert to CP name. */
+ result = CPName_ConvertTo(path,
+ reqBufferSize,
+ requestV2->fileName.name);
+ LOG(8, ("Converted path %s\n", requestV2->fileName.name));
+ if (result < 0) {
+ LOG(8, ("CP conversion failed.\n"));
+ result = -EINVAL;
+ goto out;
+ }
+ requestV2->fileName.length = result;
+ }
break;
}
case HGFS_OP_GETATTR: {
HgfsRequestGetattr *requestV1;
requestV1 = (HgfsRequestGetattr *)(HGFS_REQ_PAYLOAD(req));
- fileName = requestV1->fileName.name;
- fileNameLength = &requestV1->fileName.length;
reqSize = sizeof *requestV1;
reqBufferSize = HGFS_NAME_BUFFER_SIZE(HGFS_LARGE_PACKET_MAX, requestV1);
+ if (requestV1->fileName.name != NULL) {
+ /* Convert to CP name. */
+ result = CPName_ConvertTo(path,
+ reqBufferSize,
+ requestV1->fileName.name);
+ LOG(8, ("Converted path %s\n", requestV1->fileName.name));
+ if (result < 0) {
+ LOG(8, ("CP conversion failed.\n"));
+ result = -EINVAL;
+ goto out;
+ }
+ requestV1->fileName.length = result;
+ }
break;
}
@@ -246,20 +277,6 @@
goto out;
}
- if (fileName != NULL) {
- /* Convert to CP name. */
- result = CPName_ConvertTo(path,
- reqBufferSize,
- fileName);
- LOG(8, ("Converted path %s\n", fileName));
- if (result < 0) {
- LOG(8, ("CP conversion failed.\n"));
- result = -EINVAL;
- goto out;
- }
- *fileNameLength = result;
- }
-
req->payloadSize = reqSize + result;
/* Fill in header here as payloadSize needs to be there. */