From 34e2051fafc54d812e98bae8748b106e8f68213e Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Mon, 17 Feb 2020 15:11:07 +0000 Subject: [PATCH] Remove swblk_t. It was used only to store the bounds of each swap device. However, since swblk_t is a signed 32-bit int and daddr_t is a signed 64-bit int, swp_pager_isondev() may return an invalid result if swap devices are repeatedly added and removed and sw_end for a device ends up becoming a negative number. Note that the removed comment about maximum swap size still applies. Reviewed by: jeff, kib Tested by: pho MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D23666 --- lib/libkvm/kvm_getswapinfo.c | 6 ++---- sys/vm/swap_pager.c | 2 +- sys/vm/swap_pager.h | 13 ++++--------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/lib/libkvm/kvm_getswapinfo.c b/lib/libkvm/kvm_getswapinfo.c index 747ab5076ecd..7fd58f977614 100644 --- a/lib/libkvm/kvm_getswapinfo.c +++ b/lib/libkvm/kvm_getswapinfo.c @@ -115,8 +115,7 @@ int kvm_getswapinfo_kvm(kvm_t *kd, struct kvm_swap *swap_ary, int swap_max, int flags) { - int i; - swblk_t ttl; + int i, ttl; TAILQ_HEAD(, swdevt) swtailq; struct swdevt *sp, swinfo; struct kvm_swap tot; @@ -167,8 +166,7 @@ int kvm_getswapinfo_sysctl(kvm_t *kd, struct kvm_swap *swap_ary, int swap_max, int flags) { - int ti; - swblk_t ttl; + int ti, ttl; size_t mibi, len; int soid[SWI_MAXMIB]; struct xswdev xsd; diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index 597af7b783d2..d62db64d1888 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -2334,7 +2334,7 @@ swaponsomething(struct vnode *vp, void *id, u_long nblks, sw_strategy_t *strategy, sw_close_t *close, dev_t dev, int flags) { struct swdevt *sp, *tsp; - swblk_t dvbase; + daddr_t dvbase; u_long mblocks; /* diff --git a/sys/vm/swap_pager.h b/sys/vm/swap_pager.h index 76456a40e018..80dca93fbf85 100644 --- a/sys/vm/swap_pager.h +++ b/sys/vm/swap_pager.h @@ -38,14 +38,9 @@ */ #ifndef _VM_SWAP_PAGER_H_ -#define _VM_SWAP_PAGER_H_ 1 +#define _VM_SWAP_PAGER_H_ -typedef int32_t swblk_t; /* - * swap offset. This is the type used to - * address the "virtual swap device" and - * therefore the maximum swap space is - * 2^32 pages. - */ +#include struct buf; struct swdevt; @@ -62,8 +57,8 @@ struct swdevt { dev_t sw_dev; struct vnode *sw_vp; void *sw_id; - swblk_t sw_first; - swblk_t sw_end; + __daddr_t sw_first; + __daddr_t sw_end; struct blist *sw_blist; TAILQ_ENTRY(swdevt) sw_list; sw_strategy_t *sw_strategy;