1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

dm: alloc always 8byte aligned

Fixing regression caused by 197b5e6dc7.
So the 'TODO' part now finally know the answer - there is 'sparc64'
architecture which imposes limitation to read 64b words only through
64b aligned address.

Since we never could know how is the user going to use the returned
pointer and the userusually expects it's aligned on the highest CPU
required alignement, preserve it also for char*.

Fixes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809685
Reported-by: Anatoly Pugachev <matorola@gmail.com>
This commit is contained in:
Zdenek Kabelac 2016-02-11 12:00:28 +01:00
parent f91622741f
commit 0baf66a992
2 changed files with 5 additions and 3 deletions

View File

@ -1,5 +1,6 @@
Version 1.02.116 - Version 1.02.116 -
==================================== ====================================
Use fully aligned allocations for dm_pool_strdup/strndup() (1.02.64).
Fix thin-pool table parameter feature order to match kernel output. Fix thin-pool table parameter feature order to match kernel output.
Version 1.02.115 - 25th January 2016 Version 1.02.115 - 25th January 2016

View File

@ -48,17 +48,18 @@ static size_t pagesize_mask = 0;
char *dm_pool_strdup(struct dm_pool *p, const char *str) char *dm_pool_strdup(struct dm_pool *p, const char *str)
{ {
char *ret = dm_pool_alloc_aligned(p, strlen(str) + 1, 2); size_t len = strlen(str) + 1;
char *ret = dm_pool_alloc(p, len);
if (ret) if (ret)
strcpy(ret, str); memcpy(ret, str, len);
return ret; return ret;
} }
char *dm_pool_strndup(struct dm_pool *p, const char *str, size_t n) char *dm_pool_strndup(struct dm_pool *p, const char *str, size_t n)
{ {
char *ret = dm_pool_alloc_aligned(p, n + 1, 2); char *ret = dm_pool_alloc(p, n + 1);
if (ret) { if (ret) {
strncpy(ret, str, n); strncpy(ret, str, n);