mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH v2 00/19] 32-bit lseek and /dev/mem fixes/improvements
@ 2019-01-29  6:55 Andrey Smirnov
  2019-01-29  6:55 ` [PATCH v2 01/19] commands: Move mem_parse_options() to lib/misc.c Andrey Smirnov
                   ` (18 more replies)
  0 siblings, 19 replies; 35+ messages in thread
From: Andrey Smirnov @ 2019-01-29  6:55 UTC (permalink / raw)
  To: barebox; +Cc: Andrey Smirnov

This series is a result of my attempt to fix a regression in lseek()
on 32-bit platforms. The regression manifested in lseek() unable to
seek past ~4GiB mark caused and was caused by usage of IS_ERR_VALUE()
(see commit messages for more detailed explanation).

Feedback is welcome!

Thanks,
Andrey Smirnov

Changes since [v1]:

    - /dev/mem is split into /dev/mem and /dev/highmem on 64-bit
      platforms

    - .lseek() hooks are converted to return error code or 0 on
      success

    - A number of .lseek() related simplifcations that were done as a
      percursor to the change above added to the series

    - Added a fix for a bugs discovered when testing corener cases of
      accessing /dev/mem (/dev/highmem)

[v1] http://lists.infradead.org/pipermail/barebox/2019-January/036756.html

Andrey Smirnov (19):
  commands: Move mem_parse_options() to lib/misc.c
  commands: Get rid of mem_rw_buf
  commands: Move /dev/mem driver to drivers/misc
  nvmem: Do not use DEVFS_IS_CHARACTER_DEV
  common: firmware: Don't use FILE_SIZE_STREAM directly
  devfs: Fix incorrect error check for cdev->ops->lseek()
  fs: Update FILE position in lseek()
  fs: Drop trivial .lseek() implementaitons in FS drivers
  devfs: Drop dev_lseek_default()
  fs: devfs: Change .lseek callbacks to return 'int'
  fs: Do not use IS_ERR_VALUE() to validate offset in lseek()
  fs: Simplify new position calculation in lseek()
  fs: Share code between mem_write()/mem_read()
  fs: Avoid division in mem_copy()
  fs: Report actual data processed by mem_copy()
  fs: Introduce mem_read_nofail()
  commands: md: Do not use memmap()
  drivers: mem: Create file to access second half of 64-bit memory
  libfile: Fix incorrect lseek check in open_and_lseek()

 arch/arm/mach-mxs/ocotp.c     |   1 -
 arch/sandbox/board/hostfile.c |   1 -
 commands/Kconfig              |  17 ++---
 commands/Makefile             |   1 -
 commands/md.c                 |  18 ++---
 commands/mem.c                | 123 ----------------------------------
 commands/memcmp.c             |  16 ++---
 commands/memcpy.c             |  10 +--
 commands/memset.c             |   2 -
 commands/stddev.c             |   4 --
 common/block.c                |   1 -
 common/firmware.c             |   2 +-
 common/ratp/md.c              |   9 +--
 drivers/base/regmap/regmap.c  |   1 -
 drivers/eeprom/at24.c         |   1 -
 drivers/eeprom/at25.c         |   1 -
 drivers/hw_random/core.c      |   1 -
 drivers/mfd/act8846.c         |   1 -
 drivers/mfd/lp3972.c          |   1 -
 drivers/mfd/mc34704.c         |   1 -
 drivers/mfd/mc9sdz60.c        |   1 -
 drivers/mfd/stmpe-i2c.c       |   1 -
 drivers/mfd/twl-core.c        |   1 -
 drivers/misc/Kconfig          |   3 +
 drivers/misc/Makefile         |   1 +
 drivers/misc/mem.c            |  61 +++++++++++++++++
 drivers/misc/sram.c           |   1 -
 drivers/mtd/core.c            |   1 -
 drivers/mtd/mtdoob.c          |   1 -
 drivers/mtd/mtdraw.c          |   1 -
 drivers/mtd/nand/nand-bb.c    |   5 +-
 drivers/mtd/ubi/barebox.c     |   4 +-
 drivers/net/e1000/eeprom.c    |   2 -
 drivers/net/ksz8864rmn.c      |   1 -
 drivers/net/phy/mdio_bus.c    |   1 -
 drivers/nvmem/core.c          |   2 -
 drivers/video/fb.c            |   1 -
 drivers/w1/slaves/w1_ds2431.c |   1 -
 drivers/w1/slaves/w1_ds2433.c |   1 -
 fs/bpkfs.c                    |   4 +-
 fs/cramfs/cramfs.c            |   7 --
 fs/devfs-core.c               | 110 +++++++++++++++++++++---------
 fs/devfs.c                    |  14 ++--
 fs/efi.c                      |   6 +-
 fs/efivarfs.c                 |   8 ---
 fs/ext4/ext_barebox.c         |   8 ---
 fs/fat/fat.c                  |   5 +-
 fs/fs.c                       |  33 ++++-----
 fs/nfs.c                      |   5 +-
 fs/omap4_usbbootfs.c          |   7 --
 fs/pstore/fs.c                |   4 +-
 fs/ramfs.c                    |   7 --
 fs/ratpfs.c                   |   9 ---
 fs/smhfs.c                    |  10 ++-
 fs/squashfs/squashfs.c        |   8 ---
 fs/tftp.c                     |  27 +++++---
 fs/ubifs/ubifs.c              |   8 ---
 fs/uimagefs.c                 |   4 +-
 include/driver.h              |   9 +--
 include/fs.h                  |   2 +-
 lib/libfile.c                 |   3 +-
 lib/misc.c                    |  42 ++++++++++++
 62 files changed, 283 insertions(+), 359 deletions(-)
 delete mode 100644 commands/mem.c
 create mode 100644 drivers/misc/mem.c

-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2019-02-04 19:36 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-29  6:55 [PATCH v2 00/19] 32-bit lseek and /dev/mem fixes/improvements Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 01/19] commands: Move mem_parse_options() to lib/misc.c Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 02/19] commands: Get rid of mem_rw_buf Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 03/19] commands: Move /dev/mem driver to drivers/misc Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 04/19] nvmem: Do not use DEVFS_IS_CHARACTER_DEV Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 05/19] common: firmware: Don't use FILE_SIZE_STREAM directly Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 06/19] devfs: Fix incorrect error check for cdev->ops->lseek() Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 07/19] fs: Update FILE position in lseek() Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 08/19] fs: Drop trivial .lseek() implementaitons in FS drivers Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 09/19] devfs: Drop dev_lseek_default() Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 10/19] fs: devfs: Change .lseek callbacks to return 'int' Andrey Smirnov
2019-02-04 14:32   ` Sascha Hauer
2019-01-29  6:55 ` [PATCH v2 11/19] fs: Do not use IS_ERR_VALUE() to validate offset in lseek() Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 12/19] fs: Simplify new position calculation " Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 13/19] fs: Share code between mem_write()/mem_read() Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 14/19] fs: Avoid division in mem_copy() Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 15/19] fs: Report actual data processed by mem_copy() Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 16/19] fs: Introduce mem_read_nofail() Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 17/19] commands: md: Do not use memmap() Andrey Smirnov
2019-02-04 13:57   ` Sascha Hauer
2019-02-04 19:35     ` Andrey Smirnov
2019-01-29  6:55 ` [PATCH v2 18/19] drivers: mem: Create file to access second half of 64-bit memory Andrey Smirnov
2019-01-29  8:48   ` Sascha Hauer
2019-01-29 20:40     ` Andrey Smirnov
2019-01-29 21:09       ` Sam Ravnborg
2019-01-31 10:54       ` Peter Mamonov
2019-01-31 12:50         ` Peter Mamonov
2019-02-01  7:47           ` Sascha Hauer
2019-02-01 10:25             ` Peter Mamonov
2019-02-02  1:07               ` Andrey Smirnov
2019-02-02  0:35             ` Andrey Smirnov
2019-02-04  7:40               ` Sascha Hauer
2019-01-31 20:17         ` Andrey Smirnov
2019-02-01 10:14           ` Peter Mamonov
2019-01-29  6:55 ` [PATCH v2 19/19] libfile: Fix incorrect lseek check in open_and_lseek() Andrey Smirnov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox