diff options
| -rw-r--r-- | fs/jffs2/compr_lzo.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/fs/jffs2/compr_lzo.c b/fs/jffs2/compr_lzo.c index 47b045797e4..90cb60d0978 100644 --- a/fs/jffs2/compr_lzo.c +++ b/fs/jffs2/compr_lzo.c | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | 19 | ||
| 20 | static void *lzo_mem; | 20 | static void *lzo_mem; |
| 21 | static void *lzo_compress_buf; | 21 | static void *lzo_compress_buf; |
| 22 | static DEFINE_MUTEX(deflate_mutex); | 22 | static DEFINE_MUTEX(deflate_mutex); /* for lzo_mem and lzo_compress_buf */ |
| 23 | 23 | ||
| 24 | static void free_workspace(void) | 24 | static void free_workspace(void) |
| 25 | { | 25 | { |
| @@ -49,18 +49,21 @@ static int jffs2_lzo_compress(unsigned char *data_in, unsigned char *cpage_out, | |||
| 49 | 49 | ||
| 50 | mutex_lock(&deflate_mutex); | 50 | mutex_lock(&deflate_mutex); |
| 51 | ret = lzo1x_1_compress(data_in, *sourcelen, lzo_compress_buf, &compress_size, lzo_mem); | 51 | ret = lzo1x_1_compress(data_in, *sourcelen, lzo_compress_buf, &compress_size, lzo_mem); |
| 52 | mutex_unlock(&deflate_mutex); | ||
| 53 | |||
| 54 | if (ret != LZO_E_OK) | 52 | if (ret != LZO_E_OK) |
| 55 | return -1; | 53 | goto fail; |
| 56 | 54 | ||
| 57 | if (compress_size > *dstlen) | 55 | if (compress_size > *dstlen) |
| 58 | return -1; | 56 | goto fail; |
| 59 | 57 | ||
| 60 | memcpy(cpage_out, lzo_compress_buf, compress_size); | 58 | memcpy(cpage_out, lzo_compress_buf, compress_size); |
| 61 | *dstlen = compress_size; | 59 | mutex_unlock(&deflate_mutex); |
| 62 | 60 | ||
| 61 | *dstlen = compress_size; | ||
| 63 | return 0; | 62 | return 0; |
| 63 | |||
| 64 | fail: | ||
| 65 | mutex_unlock(&deflate_mutex); | ||
| 66 | return -1; | ||
| 64 | } | 67 | } |
| 65 | 68 | ||
| 66 | static int jffs2_lzo_decompress(unsigned char *data_in, unsigned char *cpage_out, | 69 | static int jffs2_lzo_decompress(unsigned char *data_in, unsigned char *cpage_out, |
