diff --git a/tools/binman/comp_util.py b/tools/binman/comp_util.py
index 2f78bab..dc76ada 100644
--- a/tools/binman/comp_util.py
+++ b/tools/binman/comp_util.py
@@ -25,28 +25,20 @@
     This requires 'lz4' and 'lzma_alone' tools. It also requires an output
     directory to be previously set up, by calling PrepareOutputDir().
 
-    Care is taken to use unique temporary files so that this function can be
-    called from multiple threads.
-
     Args:
         indata (bytes): Input data to compress
-        algo (str): Algorithm to use ('none', 'gzip', 'lz4' or 'lzma')
+        algo (str): Algorithm to use ('none', 'lz4' or 'lzma')
 
     Returns:
         bytes: Compressed data
     """
     if algo == 'none':
         return indata
-    fname = tempfile.NamedTemporaryFile(prefix='%s.comp.tmp' % algo,
-                                        dir=tools.GetOutputDir()).name
-    tools.WriteFile(fname, indata)
     if algo == 'lz4':
         data = LZ4.compress(indata)
     # cbfstool uses a very old version of lzma
     elif algo == 'lzma':
         data = LZMA_ALONE.compress(indata)
-    elif algo == 'gzip':
-        data = tools.Run('gzip', '-c', fname, binary=True)
     else:
         raise ValueError("Unknown algorithm '%s'" % algo)
     if with_header:
@@ -65,7 +57,7 @@
 
     Args:
         indata (bytes): Input data to decompress
-        algo (str): Algorithm to use ('none', 'gzip', 'lz4' or 'lzma')
+        algo (str): Algorithm to use ('none', 'lz4' or 'lzma')
 
     Returns:
         (bytes) Compressed data
@@ -75,14 +67,10 @@
     if with_header:
         data_len = struct.unpack('<I', indata[:4])[0]
         indata = indata[4:4 + data_len]
-    fname = tools.GetOutputFilename('%s.decomp.tmp' % algo)
-    tools.WriteFile(fname, indata)
     if algo == 'lz4':
         data = LZ4.decompress(indata)
     elif algo == 'lzma':
         data = LZMA_ALONE.decompress(indata)
-    elif algo == 'gzip':
-        data = tools.Run('gzip', '-cd', fname, binary=True)
     else:
         raise ValueError("Unknown algorithm '%s'" % algo)
     return data
