diff --git a/dm-bht.c b/dm-bht.c
index ccc7a17..c190b69 100644
--- a/dm-bht.c
+++ b/dm-bht.c
@@ -286,7 +286,7 @@
 	 * on allocation or sector calculation.
 	 */
 	if (((last_index >> bht->node_count_shift) + 1) >
-	    UINT_MAX / max((unsigned int)sizeof(struct dm_bht_entry),
+	    UINT_MAX / MAX((unsigned int)sizeof(struct dm_bht_entry),
 			   (unsigned int)to_sector(PAGE_SIZE))) {
 		DMCRIT("required entries %u is too large",
 		       last_index + 1);
@@ -438,7 +438,7 @@
 int dm_bht_zeroread_callback(void *ctx, sector_t start, u8 *dst,
 			     sector_t count, struct dm_bht_entry *entry)
 {
-	memset(dst, 0, to_bytes(count));
+	memset(dst, 0, verity_to_bytes(count));
 	dm_bht_read_completed(entry, 0);
 	return 0;
 }
@@ -671,7 +671,7 @@
  */
 void dm_bht_set_salt(struct dm_bht *bht, const char *hexsalt)
 {
-	size_t saltlen = min(strlen(hexsalt) / 2, sizeof(bht->salt));
+	size_t saltlen = MIN(strlen(hexsalt) / 2, sizeof(bht->salt));
 	bht->have_salt = true;
 	memset(bht->salt, 0, sizeof(bht->salt));
 	dm_bht_hex_to_bin(bht->salt, (const u8 *)hexsalt, saltlen);
diff --git a/dm-bht_unittest.cc b/dm-bht_unittest.cc
index 2eadf84..ae82bf4 100644
--- a/dm-bht_unittest.cc
+++ b/dm-bht_unittest.cc
@@ -54,7 +54,7 @@
   EXPECT_EQ(0, dm_bht_create(&bht, blocks, "sha256"));
   dm_bht_set_read_cb(&bht, dm_bht_zeroread_callback);
   sectors = dm_bht_sectors(&bht);
-  hash_data = new u8[to_bytes(sectors)];
+  hash_data = new u8[verity_to_bytes(sectors)];
   dm_bht_set_buffer(&bht, hash_data);
 
   do {
@@ -87,9 +87,9 @@
 
   int Read(sector_t start, u8 *dst, sector_t count) {
     EXPECT_LT(start, sectors_);
-    EXPECT_EQ(to_bytes(count), PAGE_SIZE);
-    u8 *src = &hash_data_[to_bytes(start)];
-    memcpy(dst, src, to_bytes(count));
+    EXPECT_EQ(verity_to_bytes(count), PAGE_SIZE);
+    u8 *src = &hash_data_[verity_to_bytes(start)];
+    memcpy(dst, src, verity_to_bytes(count));
     return 0;
   }
 
@@ -142,7 +142,7 @@
 
     EXPECT_EQ(0, dm_bht_create(bht_, total_blocks, digest_algorithm));
     sectors_ = dm_bht_sectors(bht_);
-    hash_data_.resize(to_bytes(sectors_));
+    hash_data_.resize(verity_to_bytes(sectors_));
 
     if (salt)
       dm_bht_set_salt(bht_, salt);
diff --git a/file_hasher.cc b/file_hasher.cc
index d98186e..1066965 100644
--- a/file_hasher.cc
+++ b/file_hasher.cc
@@ -63,7 +63,7 @@
   }
 
   sectors_ = dm_bht_sectors(&tree_);
-  hash_data_ = new u8[to_bytes(sectors_)];
+  hash_data_ = new u8[verity_to_bytes(sectors_)];
 
   // No reading is needed.
   dm_bht_set_read_cb(&tree_, dm_bht_zeroread_callback);
@@ -72,7 +72,7 @@
 }
 
 bool FileHasher::Store() {
-  return destination_->WriteAt(to_bytes(sectors_), hash_data_, 0);
+  return destination_->WriteAt(verity_to_bytes(sectors_), hash_data_, 0);
 }
 
 bool FileHasher::Hash() {
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h
index db2b90b..0d22467 100644
--- a/include/linux/device-mapper.h
+++ b/include/linux/device-mapper.h
@@ -28,6 +28,6 @@
 
 #define SECTOR_SHIFT 9
 #define to_sector(x) ((x) >> SECTOR_SHIFT)
-#define to_bytes(x) ((x) << SECTOR_SHIFT)
+#define verity_to_bytes(x) ((x) << SECTOR_SHIFT)
 
 #endif  /* VERITY_INCLUDE_LINUX_DEVICE_MAPPER_H_ */
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 16deee3..ca0893d 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -24,13 +24,13 @@
 	_res; \
 })
 
-#define min(x, y) ({				\
+#define MIN(x, y) ({				\
 	typeof(x) _min1 = (x);			\
 	typeof(y) _min2 = (y);			\
 	(void) (&_min1 == &_min2);		\
 	_min1 < _min2 ? _min1 : _min2; })
 
-#define max(x, y) ({				\
+#define MAX(x, y) ({				\
 	typeof(x) _max1 = (x);			\
 	typeof(y) _max2 = (y);			\
 	(void) (&_max1 == &_max2);		\
