]> sourceware.org Git - lvm2.git/commitdiff
libdm: add memory barrier
authorZdenek Kabelac <zkabelac@redhat.com>
Fri, 16 Nov 2018 15:01:03 +0000 (16:01 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Fri, 16 Nov 2018 23:30:50 +0000 (00:30 +0100)
Just for case ensure compiler is not able to optimize
memset() away for resources that are released.

This idea of using memory barrier is taken from openssl.

Other options would be to check for 'explicit_bzero' function.

device_mapper/ioctl/libdm-iface.c
libdm/ioctl/libdm-iface.c

index 1321dc00814a1a3ccee24a8a1f1c941fb69be27d..eb6e9dbf31765ebbdfcf7e7518f8d604d087cc37 100644 (file)
@@ -471,6 +471,7 @@ static void _dm_zfree_string(char *string)
 {
        if (string) {
                memset(string, 0, strlen(string));
+               asm volatile ("" ::: "memory"); /* Compiler barrier. */
                free(string);
        }
 }
@@ -479,6 +480,7 @@ static void _dm_zfree_dmi(struct dm_ioctl *dmi)
 {
        if (dmi) {
                memset(dmi, 0, dmi->data_size);
+               asm volatile ("" ::: "memory"); /* Compiler barrier. */
                free(dmi);
        }
 }
index 002669e8d00f0ecb7c5ec2fd41c7ea1c3e31ef18..b195c115f1fde17f7bd29858f192d3c5b5497e6c 100644 (file)
@@ -469,6 +469,7 @@ static void _dm_zfree_string(char *string)
 {
        if (string) {
                memset(string, 0, strlen(string));
+               asm volatile ("" ::: "memory"); /* Compiler barrier. */
                dm_free(string);
        }
 }
@@ -477,6 +478,7 @@ static void _dm_zfree_dmi(struct dm_ioctl *dmi)
 {
        if (dmi) {
                memset(dmi, 0, dmi->data_size);
+               asm volatile ("" ::: "memory"); /* Compiler barrier. */
                dm_free(dmi);
        }
 }
This page took 0.038211 seconds and 5 git commands to generate.