Coly Li
e940258c4e
bcache: improve sysfs_strtoul_clamp()
...
[ Upstream commit 596b5a5dd1bc2fa019fdaaae522ef331deef927f ]
Currently sysfs_strtoul_clamp() is defined as,
82 #define sysfs_strtoul_clamp(file, var, min, max) \
83 do { \
84 if (attr == &sysfs_ ## file) \
85 return strtoul_safe_clamp(buf, var, min, max) \
86 ?: (ssize_t) size; \
87 } while (0)
The problem is, if bit width of var is less then unsigned long, min and
max may not protect var from integer overflow, because overflow happens
in strtoul_safe_clamp() before checking min and max.
To fix such overflow in sysfs_strtoul_clamp(), to make min and max take
effect, this patch adds an unsigned long variable, and uses it to macro
strtoul_safe_clamp() to convert an unsigned long value in range defined
by [min, max]. Then assign this value to var. By this method, if bit
width of var is less than unsigned long, integer overflow won't happen
before min and max are checking.
Now sysfs_strtoul_clamp() can properly handle smaller data type like
unsigned int, of cause min and max should be defined in range of
unsigned int too.
Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-04-05 22:29:12 +02:00
..
bcache
bcache: improve sysfs_strtoul_clamp()
2019-04-05 22:29:12 +02:00
persistent-data
dm btree: fix serious bug in btree_split_beneath()
2018-01-23 19:57:08 +01:00
bitmap.c
md: free unused memory after bitmap resize
2017-12-16 16:25:47 +01:00
bitmap.h
md-cluster: sync bitmap when node received RESYNCING msg
2016-05-04 12:39:35 -07:00
dm-bio-prison.c
dm-bio-prison.h
dm-bio-record.h
dm-bufio.c
dm bufio: don't take the lock in dm_bufio_shrink_count
2018-07-11 16:26:46 +02:00
dm-bufio.h
dm-builtin.c
dm: move request-based code out to dm-rq.[hc]
2016-06-10 15:15:44 -04:00
dm-cache-block-types.h
dm-cache-metadata.c
dm cache metadata: ignore hints array being too small during resize
2018-10-13 09:18:55 +02:00
dm-cache-metadata.h
dm cache: make sure every metadata function checks fail_io
2016-03-10 17:12:12 -05:00
dm-cache-policy-cleaner.c
dm cache: speed up writing of the hint array
2016-09-22 11:15:02 -04:00
dm-cache-policy-internal.h
dm cache: speed up writing of the hint array
2016-09-22 11:15:02 -04:00
dm-cache-policy-smq.c
dm cache policy smq: distribute entries to random levels when switching to smq
2016-09-22 11:15:03 -04:00
dm-cache-policy.c
dm-cache-policy.h
dm cache: speed up writing of the hint array
2016-09-22 11:15:02 -04:00
dm-cache-target.c
dm cache: fix resize crash if user doesn't reload cache table
2018-10-13 09:18:55 +02:00
dm-core.h
dm: allocate struct mapped_device with kvzalloc
2017-11-30 08:39:02 +00:00
dm-crypt.c
dm crypt: mark key as invalid until properly loaded
2017-01-06 10:40:15 +01:00
dm-delay.c
dm: rename target's per_bio_data_size to per_io_data_size
2016-02-22 22:34:37 -05:00
dm-era-target.c
dm era: save spacemap metadata root after the pre-commit
2017-05-20 14:28:37 +02:00
dm-exception-store.c
dm-exception-store.h
dm snapshot: fix hung bios when copy error occurs
2016-01-08 20:03:05 -05:00
dm-flakey.c
dm flakey: return -EINVAL on interval bounds error in flakey_ctr()
2017-01-06 10:40:15 +01:00
dm-io.c
dm io: fix duplicate bio completion due to missing ref count
2018-03-11 16:21:30 +01:00
dm-ioctl.c
dm ioctl: harden copy_params()'s copy_from_user() from malicious users
2018-11-13 11:17:02 -08:00
dm-kcopyd.c
dm kcopyd: Fix bug causing workqueue stalls
2019-01-26 09:38:35 +01:00
dm-linear.c
libnvdimm for 4.8
2016-07-28 17:38:16 -07:00
dm-log-userspace-base.c
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log-writes.c
Merge branch 'for-4.9/block' of git://git.kernel.dk/linux-block
2016-10-07 14:42:05 -07:00
dm-log.c
dm log: fix unitialized bio operation flags
2016-08-24 21:55:05 -04:00
dm-mpath.c
dm mpath: cleanup -Wbool-operation warning in choose_pgpath()
2017-07-27 15:07:55 -07:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm path selector: remove 'repeat_count' return from .select_path hook
2016-02-22 22:34:42 -05:00
dm-queue-length.c
dm path selector: remove 'repeat_count' return from .select_path hook
2016-02-22 22:34:42 -05:00
dm-raid.c
dm raid: fix rebuild of specific devices by updating superblock
2018-10-10 08:53:21 +02:00
dm-raid1.c
dm mirror: use all available legs on multiple failures
2016-10-14 11:55:17 -04:00
dm-region-hash.c
block: rename bio bi_rw to bi_opf
2016-08-07 14:41:02 -06:00
dm-round-robin.c
dm round robin: revert "use percpu 'repeat_count' and 'current_path'"
2017-03-12 06:41:44 +01:00
dm-rq.c
dm rq: check blk_mq_register_dev() return value in dm_mq_init_request_queue()
2017-05-20 14:28:37 +02:00
dm-rq.h
dm rq: introduce dm_mq_kick_requeue_list()
2016-09-15 11:16:05 -04:00
dm-service-time.c
dm path selector: remove 'repeat_count' return from .select_path hook
2016-02-22 22:34:42 -05:00
dm-snap-persistent.c
dm: use bio op accessors
2016-06-07 13:41:38 -06:00
dm-snap-transient.c
dm snapshot: fix hung bios when copy error occurs
2016-01-08 20:03:05 -05:00
dm-snap.c
dm snapshot: Fix excessive memory usage and workqueue stalls
2019-01-26 09:38:35 +01:00
dm-stats.c
dm stats: fix a leaked s->histogram_boundaries array
2017-03-12 06:41:44 +01:00
dm-stats.h
dm-stripe.c
block: rename bio bi_rw to bi_opf
2016-08-07 14:41:02 -06:00
dm-switch.c
dm-sysfs.c
dm: move request-based code out to dm-rq.[hc]
2016-06-10 15:15:44 -04:00
dm-table.c
dm table: an 'all_blk_mq' table must be loaded for a blk-mq DM device
2017-01-06 10:40:15 +01:00
dm-target.c
libnvdimm for 4.8
2016-07-28 17:38:16 -07:00
dm-thin-metadata.c
dm thin: fix passdown_double_checking_shared_status()
2019-01-31 08:12:36 +01:00
dm-thin-metadata.h
dm thin: fix passdown_double_checking_shared_status()
2019-01-31 08:12:36 +01:00
dm-thin.c
dm thin: add sanity checks to thin-pool and external snapshot creation
2019-04-05 22:29:07 +02:00
dm-uevent.c
dm-uevent.h
dm-verity-fec.c
dm verity fec: fix bufio leaks
2017-04-12 12:41:12 +02:00
dm-verity-fec.h
dm verity fec: limit error correction recursion
2017-04-12 12:41:12 +02:00
dm-verity-target.c
dm: rename target's per_bio_data_size to per_io_data_size
2016-02-22 22:34:37 -05:00
dm-verity.h
dm-zero.c
block: rename bio bi_rw to bi_opf
2016-08-07 14:41:02 -06:00
dm.c
dm: correctly handle chained bios in dec_pending()
2018-02-22 15:43:51 +01:00
dm.h
dm: add infrastructure for DAX support
2016-07-20 23:49:49 -04:00
faulty.c
MD: rename some functions
2016-01-20 13:52:20 -08:00
Kconfig
dm raid: select the Kconfig option CONFIG_MD_RAID0
2017-05-25 15:44:33 +02:00
linear.c
md/linear: shutup lockdep warnning
2017-10-21 17:21:35 +02:00
linear.h
md linear: fix a race between linear_add() and linear_congested()
2017-03-12 06:41:52 +01:00
Makefile
dm: move request-based code out to dm-rq.[hc]
2016-06-10 15:15:44 -04:00
md-cluster.c
md-cluster: clear another node's suspend_area after the copy is finished
2018-10-03 17:01:43 -07:00
md-cluster.h
md-cluster: gather resync infos and enable recv_thread after bitmap is ready
2016-05-09 09:24:03 -07:00
md.c
MD: fix invalid stored role for a disk - try2
2018-11-13 11:17:05 -08:00
md.h
md: changes for MD_STILL_CLOSED flag
2016-09-21 09:09:44 -07:00
multipath.c
block: rename bio bi_rw to bi_opf
2016-08-07 14:41:02 -06:00
multipath.h
raid0.c
block: rename bio bi_rw to bi_opf
2016-08-07 14:41:02 -06:00
raid0.h
raid1.c
MD: fix invalid stored role for a disk - try2
2018-11-13 11:17:05 -08:00
raid1.h
raid5-cache.c
raid5-cache: correct condition for empty metadata write
2016-10-28 22:04:03 -07:00
raid5.c
md: Fix failed allocation of md_register_thread
2019-03-23 13:19:53 +01:00
raid5.h
md/raid5: Convert to hotplug state machine
2016-09-06 18:30:23 +02:00
raid10.c
md: Fix failed allocation of md_register_thread
2019-03-23 13:19:53 +01:00
raid10.h
raid10: improve random reads performance
2016-07-19 15:20:28 -07:00