diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ubifs/file.c | 4 | ||||
-rw-r--r-- | fs/ubifs/super.c | 17 | ||||
-rw-r--r-- | fs/ubifs/ubifs.h | 2 |
3 files changed, 15 insertions, 8 deletions
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index 9124eee73aea..8be827cc7078 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c | |||
@@ -705,12 +705,12 @@ static int ubifs_do_bulk_read(struct ubifs_info *c, struct page *page1) | |||
705 | int err, page_idx, page_cnt, ret = 0, n = 0; | 705 | int err, page_idx, page_cnt, ret = 0, n = 0; |
706 | loff_t isize; | 706 | loff_t isize; |
707 | 707 | ||
708 | bu = kmalloc(sizeof(struct bu_info), GFP_NOFS); | 708 | bu = kmalloc(sizeof(struct bu_info), GFP_NOFS | __GFP_NOWARN); |
709 | if (!bu) | 709 | if (!bu) |
710 | return 0; | 710 | return 0; |
711 | 711 | ||
712 | bu->buf_len = c->bulk_read_buf_size; | 712 | bu->buf_len = c->bulk_read_buf_size; |
713 | bu->buf = kmalloc(bu->buf_len, GFP_NOFS); | 713 | bu->buf = kmalloc(bu->buf_len, GFP_NOFS | __GFP_NOWARN); |
714 | if (!bu->buf) | 714 | if (!bu->buf) |
715 | goto out_free; | 715 | goto out_free; |
716 | 716 | ||
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c index 8780efbf40ac..ea493e6f2652 100644 --- a/fs/ubifs/super.c +++ b/fs/ubifs/super.c | |||
@@ -36,6 +36,12 @@ | |||
36 | #include <linux/mount.h> | 36 | #include <linux/mount.h> |
37 | #include "ubifs.h" | 37 | #include "ubifs.h" |
38 | 38 | ||
39 | /* | ||
40 | * Maximum amount of memory we may 'kmalloc()' without worrying that we are | ||
41 | * allocating too much. | ||
42 | */ | ||
43 | #define UBIFS_KMALLOC_OK (128*1024) | ||
44 | |||
39 | /* Slab cache for UBIFS inodes */ | 45 | /* Slab cache for UBIFS inodes */ |
40 | struct kmem_cache *ubifs_inode_slab; | 46 | struct kmem_cache *ubifs_inode_slab; |
41 | 47 | ||
@@ -561,17 +567,18 @@ static int init_constants_early(struct ubifs_info *c) | |||
561 | * calculations when reporting free space. | 567 | * calculations when reporting free space. |
562 | */ | 568 | */ |
563 | c->leb_overhead = c->leb_size % UBIFS_MAX_DATA_NODE_SZ; | 569 | c->leb_overhead = c->leb_size % UBIFS_MAX_DATA_NODE_SZ; |
570 | |||
564 | /* Buffer size for bulk-reads */ | 571 | /* Buffer size for bulk-reads */ |
565 | c->bulk_read_buf_size = UBIFS_MAX_BULK_READ * UBIFS_MAX_DATA_NODE_SZ; | 572 | c->bulk_read_buf_size = UBIFS_MAX_BULK_READ * UBIFS_MAX_DATA_NODE_SZ; |
566 | if (c->bulk_read_buf_size > c->leb_size) | 573 | if (c->bulk_read_buf_size > c->leb_size) |
567 | c->bulk_read_buf_size = c->leb_size; | 574 | c->bulk_read_buf_size = c->leb_size; |
568 | if (c->bulk_read_buf_size > 128 * 1024) { | 575 | if (c->bulk_read_buf_size > UBIFS_KMALLOC_OK) { |
569 | /* Check if we can kmalloc more than 128KiB */ | 576 | /* Check if we can kmalloc that much */ |
570 | void *try = kmalloc(c->bulk_read_buf_size, GFP_KERNEL); | 577 | void *try = kmalloc(c->bulk_read_buf_size, |
571 | 578 | GFP_KERNEL | __GFP_NOWARN); | |
572 | kfree(try); | 579 | kfree(try); |
573 | if (!try) | 580 | if (!try) |
574 | c->bulk_read_buf_size = 128 * 1024; | 581 | c->bulk_read_buf_size = UBIFS_KMALLOC_OK; |
575 | } | 582 | } |
576 | return 0; | 583 | return 0; |
577 | } | 584 | } |
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h index a7bd32fa15b9..06ba51efd65d 100644 --- a/fs/ubifs/ubifs.h +++ b/fs/ubifs/ubifs.h | |||
@@ -753,7 +753,7 @@ struct ubifs_znode { | |||
753 | }; | 753 | }; |
754 | 754 | ||
755 | /** | 755 | /** |
756 | * struct bu_info - bulk-read information | 756 | * struct bu_info - bulk-read information. |
757 | * @key: first data node key | 757 | * @key: first data node key |
758 | * @zbranch: zbranches of data nodes to bulk read | 758 | * @zbranch: zbranches of data nodes to bulk read |
759 | * @buf: buffer to read into | 759 | * @buf: buffer to read into |