diff --git a/common/image.c b/common/image.c
index ce49bb24e0da779ab657a85f9081bf77ad7a5c60..9e63432007b88384c618f1d351489e69f2700439 100644
--- a/common/image.c
+++ b/common/image.c
@@ -53,7 +53,7 @@
 #endif
 
 #if defined(CONFIG_FIT)
-#include <md5.h>
+#include <u-boot/md5.h>
 #include <sha1.h>
 
 static int fit_check_ramdisk (const void *fit, int os_noffset,
@@ -70,7 +70,7 @@ static image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch,
 						int verify);
 #else
 #include "mkimage.h"
-#include <md5.h>
+#include <u-boot/md5.h>
 #include <time.h>
 #include <image.h>
 #endif /* !USE_HOSTCC*/
diff --git a/include/u-boot/md5.h b/include/u-boot/md5.h
new file mode 100644
index 0000000000000000000000000000000000000000..046d1eee78fbad74bb108315c1c869050d44a843
--- /dev/null
+++ b/include/u-boot/md5.h
@@ -0,0 +1,23 @@
+/*
+ * This file was transplanted with slight modifications from Linux sources
+ * (fs/cifs/md5.h) into U-Boot by Bartlomiej Sieka <tur@semihalf.com>.
+ */
+
+#ifndef _MD5_H
+#define _MD5_H
+
+#include <linux/types.h>
+
+struct MD5Context {
+	__u32 buf[4];
+	__u32 bits[2];
+	unsigned char in[64];
+};
+
+/*
+ * Calculate and store in 'output' the MD5 digest of 'len' bytes at
+ * 'input'. 'output' must have enough space to hold 16 bytes.
+ */
+void md5 (unsigned char *input, int len, unsigned char output[16]);
+
+#endif /* _MD5_H */
diff --git a/lib_generic/md5.c b/lib_generic/md5.c
index a51da451b745a15d2331c4ad677d8758d772d7e8..3cee431c71ebda31f8d442c89e7733189f7b0e65 100644
--- a/lib_generic/md5.c
+++ b/lib_generic/md5.c
@@ -27,7 +27,7 @@
 
 #include <linux/types.h>
 #include <linux/string.h>
-#include <md5.h>
+#include <u-boot/md5.h>
 
 static void
 MD5Transform(__u32 buf[4], __u32 const in[16]);