Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77cb51e6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'tags/upstream-4.17-rc1' of git://git.infradead.org/linux-ubifs

Pull UBI and UBIFS updates from Richard Weinberger:
 "Minor bug fixes and improvements"

* tag 'tags/upstream-4.17-rc1' of git://git.infradead.org/linux-ubifs:
  ubi: Reject MLC NAND
  ubifs: Remove useless parameter of lpt_heap_replace
  ubifs: Constify struct ubifs_lprops in scan_for_leb_for_idx
  ubifs: remove unnecessary assignment
  ubi: Fix error for write access
  ubi: fastmap: Don't flush fastmap work on detach
  ubifs: Check ubifs_wbuf_sync() return code
parents 375479c3 b5094b7f
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -244,7 +244,7 @@ static int ubiblock_open(struct block_device *bdev, fmode_t mode)
	 * in any case.
	 * in any case.
	 */
	 */
	if (mode & FMODE_WRITE) {
	if (mode & FMODE_WRITE) {
		ret = -EPERM;
		ret = -EROFS;
		goto out_unlock;
		goto out_unlock;
	}
	}


+11 −0
Original line number Original line Diff line number Diff line
@@ -854,6 +854,17 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
		return -EINVAL;
		return -EINVAL;
	}
	}


	/*
	 * Both UBI and UBIFS have been designed for SLC NAND and NOR flashes.
	 * MLC NAND is different and needs special care, otherwise UBI or UBIFS
	 * will die soon and you will lose all your data.
	 */
	if (mtd->type == MTD_MLCNANDFLASH) {
		pr_err("ubi: refuse attaching mtd%d - MLC NAND is not supported\n",
			mtd->index);
		return -EINVAL;
	}

	if (ubi_num == UBI_DEV_NUM_AUTO) {
	if (ubi_num == UBI_DEV_NUM_AUTO) {
		/* Search for an empty slot in the @ubi_devices array */
		/* Search for an empty slot in the @ubi_devices array */
		for (ubi_num = 0; ubi_num < UBI_MAX_DEVICES; ubi_num++)
		for (ubi_num = 0; ubi_num < UBI_MAX_DEVICES; ubi_num++)
+0 −1
Original line number Original line Diff line number Diff line
@@ -362,7 +362,6 @@ static void ubi_fastmap_close(struct ubi_device *ubi)
{
{
	int i;
	int i;


	flush_work(&ubi->fm_work);
	return_unused_pool_pebs(ubi, &ubi->fm_pool);
	return_unused_pool_pebs(ubi, &ubi->fm_pool);
	return_unused_pool_pebs(ubi, &ubi->fm_wl_pool);
	return_unused_pool_pebs(ubi, &ubi->fm_wl_pool);


+1 −1
Original line number Original line Diff line number Diff line
@@ -632,7 +632,7 @@ static int scan_for_idx_cb(struct ubifs_info *c,
 */
 */
static const struct ubifs_lprops *scan_for_leb_for_idx(struct ubifs_info *c)
static const struct ubifs_lprops *scan_for_leb_for_idx(struct ubifs_info *c)
{
{
	struct ubifs_lprops *lprops;
	const struct ubifs_lprops *lprops;
	struct scan_data data;
	struct scan_data data;
	int err;
	int err;


+1 −3
Original line number Original line Diff line number Diff line
@@ -244,7 +244,6 @@ static void remove_from_lpt_heap(struct ubifs_info *c,
/**
/**
 * lpt_heap_replace - replace lprops in a category heap.
 * lpt_heap_replace - replace lprops in a category heap.
 * @c: UBIFS file-system description object
 * @c: UBIFS file-system description object
 * @old_lprops: LEB properties to replace
 * @new_lprops: LEB properties with which to replace
 * @new_lprops: LEB properties with which to replace
 * @cat: LEB category
 * @cat: LEB category
 *
 *
@@ -254,7 +253,6 @@ static void remove_from_lpt_heap(struct ubifs_info *c,
 * lprops.  This function does that.
 * lprops.  This function does that.
 */
 */
static void lpt_heap_replace(struct ubifs_info *c,
static void lpt_heap_replace(struct ubifs_info *c,
			     struct ubifs_lprops *old_lprops,
			     struct ubifs_lprops *new_lprops, int cat)
			     struct ubifs_lprops *new_lprops, int cat)
{
{
	struct ubifs_lpt_heap *heap;
	struct ubifs_lpt_heap *heap;
@@ -362,7 +360,7 @@ void ubifs_replace_cat(struct ubifs_info *c, struct ubifs_lprops *old_lprops,
	case LPROPS_DIRTY:
	case LPROPS_DIRTY:
	case LPROPS_DIRTY_IDX:
	case LPROPS_DIRTY_IDX:
	case LPROPS_FREE:
	case LPROPS_FREE:
		lpt_heap_replace(c, old_lprops, new_lprops, cat);
		lpt_heap_replace(c, new_lprops, cat);
		break;
		break;
	case LPROPS_UNCAT:
	case LPROPS_UNCAT:
	case LPROPS_EMPTY:
	case LPROPS_EMPTY:
Loading