Hi, On Mon, Jun 11, 2018 at 10:25 AM, Raju P L S S S N <rplsssn@xxxxxxxxxxxxxx> wrote: > +void rpmh_tx_done(const struct tcs_request *msg, int r) > +{ > + struct rpmh_request *rpm_msg = container_of(msg, struct rpmh_request, > + msg); > + struct completion *compl = rpm_msg->completion; > + > + rpm_msg->err = r; > + > + if (r) > + dev_err(rpm_msg->dev, "RPMH TX fail in msg addr=%#x, err=%d\n", > + rpm_msg->msg.cmds[0].addr, r); > + > + /* Signal the blocking thread we are done */ > + if (compl) > + complete(compl); > +} > +EXPORT_SYMBOL(rpmh_tx_done); You're back to too many EXPORT_SYMBOL's again. Just use this rule of thumb: * If it's static, no EXPORT_SYMBOL. * If the prototype is in "rpmh-internal.h", no EXPORT_SYMBOL. * If the prototype is in "rpmh.h", then yes EXPORT_SYMBOL. In the case of rpmh_tx_done: the protype is in rpmh-internal.h To fix, squash in crosreview.com/1099841 -Doug -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html