From dc744b51f97ce043d07ebfdd0397b323396c7683 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Mon, 25 May 2020 21:25:31 -0400 Subject: [PATCH] bcachefs: Handle printing of null bkeys This fixes a null ptr deref. Signed-off-by: Kent Overstreet Signed-off-by: Kent Overstreet --- fs/bcachefs/bkey_methods.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/fs/bcachefs/bkey_methods.c b/fs/bcachefs/bkey_methods.c index 55ef4032b37c1..36e0c5152b479 100644 --- a/fs/bcachefs/bkey_methods.c +++ b/fs/bcachefs/bkey_methods.c @@ -176,13 +176,17 @@ void bch2_bpos_to_text(struct printbuf *out, struct bpos pos) void bch2_bkey_to_text(struct printbuf *out, const struct bkey *k) { - pr_buf(out, "u64s %u type %s ", k->u64s, - bch2_bkey_types[k->type]); + if (k) { + pr_buf(out, "u64s %u type %s ", k->u64s, + bch2_bkey_types[k->type]); - bch2_bpos_to_text(out, k->p); + bch2_bpos_to_text(out, k->p); - pr_buf(out, " snap %u len %u ver %llu", - k->p.snapshot, k->size, k->version.lo); + pr_buf(out, " snap %u len %u ver %llu", + k->p.snapshot, k->size, k->version.lo); + } else { + pr_buf(out, "(null)"); + } } void bch2_val_to_text(struct printbuf *out, struct bch_fs *c, @@ -198,8 +202,11 @@ void bch2_bkey_val_to_text(struct printbuf *out, struct bch_fs *c, struct bkey_s_c k) { bch2_bkey_to_text(out, k.k); - pr_buf(out, ": "); - bch2_val_to_text(out, c, k); + + if (k.k) { + pr_buf(out, ": "); + bch2_val_to_text(out, c, k); + } } void bch2_bkey_swab_val(struct bkey_s k) -- 2.30.2