uses __getname/__putname instead of getname. getname was deprecated the new code calls __getname (which really is a specific type of memory allocator, then copies the string safely from user space into the allocated buffer --- vmblock-only/linux/control.c 2014-03-15 15:28:40.871076076 +0100 +++ vmblock-only/linux/control.c.new 2014-03-15 15:29:15.079074439 +0100 @@ -279,11 +279,17 @@ int i; int retval; - name = getname(buf); + name = __getname(); if (IS_ERR(name)) { return PTR_ERR(name); } + i = strncpy_from_user(name, buf, PATH_MAX); + if (i < 0 || i == PATH_MAX) { + __putname(name); + return -EINVAL; + } + for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) {