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

Commit f394ad28 authored by Ka-Cheong Poon's avatar Ka-Cheong Poon Committed by David S. Miller
Browse files

rds: rds_ib_recv_alloc_cache() should call alloc_percpu_gfp() instead



Currently, rds_ib_conn_alloc() calls rds_ib_recv_alloc_caches()
without passing along the gfp_t flag.  But rds_ib_recv_alloc_caches()
and rds_ib_recv_alloc_cache() should take a gfp_t parameter so that
rds_ib_recv_alloc_cache() can call alloc_percpu_gfp() using the
correct flag instead of calling alloc_percpu().

Signed-off-by: default avatarKa-Cheong Poon <ka-cheong.poon@oracle.com>
Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fea49f60
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -400,7 +400,7 @@ void rds_ib_mr_cqe_handler(struct rds_ib_connection *ic, struct ib_wc *wc);
int rds_ib_recv_init(void);
int rds_ib_recv_init(void);
void rds_ib_recv_exit(void);
void rds_ib_recv_exit(void);
int rds_ib_recv_path(struct rds_conn_path *conn);
int rds_ib_recv_path(struct rds_conn_path *conn);
int rds_ib_recv_alloc_caches(struct rds_ib_connection *ic);
int rds_ib_recv_alloc_caches(struct rds_ib_connection *ic, gfp_t gfp);
void rds_ib_recv_free_caches(struct rds_ib_connection *ic);
void rds_ib_recv_free_caches(struct rds_ib_connection *ic);
void rds_ib_recv_refill(struct rds_connection *conn, int prefill, gfp_t gfp);
void rds_ib_recv_refill(struct rds_connection *conn, int prefill, gfp_t gfp);
void rds_ib_inc_free(struct rds_incoming *inc);
void rds_ib_inc_free(struct rds_incoming *inc);
+1 −1
Original line number Original line Diff line number Diff line
@@ -1102,7 +1102,7 @@ int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp)
	if (!ic)
	if (!ic)
		return -ENOMEM;
		return -ENOMEM;


	ret = rds_ib_recv_alloc_caches(ic);
	ret = rds_ib_recv_alloc_caches(ic, gfp);
	if (ret) {
	if (ret) {
		kfree(ic);
		kfree(ic);
		return ret;
		return ret;
+5 −5
Original line number Original line Diff line number Diff line
@@ -98,12 +98,12 @@ static void rds_ib_cache_xfer_to_ready(struct rds_ib_refill_cache *cache)
	}
	}
}
}


static int rds_ib_recv_alloc_cache(struct rds_ib_refill_cache *cache)
static int rds_ib_recv_alloc_cache(struct rds_ib_refill_cache *cache, gfp_t gfp)
{
{
	struct rds_ib_cache_head *head;
	struct rds_ib_cache_head *head;
	int cpu;
	int cpu;


	cache->percpu = alloc_percpu(struct rds_ib_cache_head);
	cache->percpu = alloc_percpu_gfp(struct rds_ib_cache_head, gfp);
	if (!cache->percpu)
	if (!cache->percpu)
	       return -ENOMEM;
	       return -ENOMEM;


@@ -118,13 +118,13 @@ static int rds_ib_recv_alloc_cache(struct rds_ib_refill_cache *cache)
	return 0;
	return 0;
}
}


int rds_ib_recv_alloc_caches(struct rds_ib_connection *ic)
int rds_ib_recv_alloc_caches(struct rds_ib_connection *ic, gfp_t gfp)
{
{
	int ret;
	int ret;


	ret = rds_ib_recv_alloc_cache(&ic->i_cache_incs);
	ret = rds_ib_recv_alloc_cache(&ic->i_cache_incs, gfp);
	if (!ret) {
	if (!ret) {
		ret = rds_ib_recv_alloc_cache(&ic->i_cache_frags);
		ret = rds_ib_recv_alloc_cache(&ic->i_cache_frags, gfp);
		if (ret)
		if (ret)
			free_percpu(ic->i_cache_incs.percpu);
			free_percpu(ic->i_cache_incs.percpu);
	}
	}