[lustre-devel] [bug report] staging: lustre: clio: Revise read ahead implementation
Dan Carpenter
dan.carpenter at oracle.com
Thu Oct 20 04:17:36 PDT 2016
Hello Jinshan Xiong,
The patch 1e1db2a97be5: "staging: lustre: clio: Revise read ahead
implementation" from Oct 2, 2016, leads to the following static
checker warning:
drivers/staging/lustre/lustre/lov/lov_io.c:611 lov_io_read_ahead()
error: 'sub' dereferencing possible ERR_PTR()
drivers/staging/lustre/lustre/lov/lov_io.c
589 static int lov_io_read_ahead(const struct lu_env *env,
590 const struct cl_io_slice *ios,
591 pgoff_t start, struct cl_read_ahead *ra)
592 {
593 struct lov_io *lio = cl2lov_io(env, ios);
594 struct lov_object *loo = lio->lis_object;
595 struct cl_object *obj = lov2cl(loo);
596 struct lov_layout_raid0 *r0 = lov_r0(loo);
597 unsigned int pps; /* pages per stripe */
598 struct lov_io_sub *sub;
599 pgoff_t ra_end;
600 loff_t suboff;
601 int stripe;
602 int rc;
603
604 stripe = lov_stripe_number(loo->lo_lsm, cl_offset(obj, start));
605 if (unlikely(!r0->lo_sub[stripe]))
606 return -EIO;
607
608 sub = lov_sub_get(env, lio, stripe);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Do we need error handling here?
609
610 lov_stripe_offset(loo->lo_lsm, cl_offset(obj, start), stripe, &suboff);
611 rc = cl_io_read_ahead(sub->sub_env, sub->sub_io,
612 cl_index(lovsub2cl(r0->lo_sub[stripe]), suboff),
613 ra);
614 lov_sub_put(sub);
615
regards,
dan carpenter
More information about the lustre-devel
mailing list