string: uninline memcpy_and_pad
[sfrench/cifs-2.6.git] / lib / string_helpers.c
index faa9d8e4e2c5329f24a1561b70e9ef4433d1786b..d5d008f5b1d9af669743cfde1a7b130fa1344f91 100644 (file)
@@ -883,6 +883,26 @@ char *strreplace(char *s, char old, char new)
 }
 EXPORT_SYMBOL(strreplace);
 
+/**
+ * memcpy_and_pad - Copy one buffer to another with padding
+ * @dest: Where to copy to
+ * @dest_len: The destination buffer size
+ * @src: Where to copy from
+ * @count: The number of bytes to copy
+ * @pad: Character to use for padding if space is left in destination.
+ */
+void memcpy_and_pad(void *dest, size_t dest_len, const void *src, size_t count,
+                   int pad)
+{
+       if (dest_len > count) {
+               memcpy(dest, src, count);
+               memset(dest + count, pad,  dest_len - count);
+       } else {
+               memcpy(dest, src, dest_len);
+       }
+}
+EXPORT_SYMBOL(memcpy_and_pad);
+
 #ifdef CONFIG_FORTIFY_SOURCE
 void fortify_panic(const char *name)
 {