>>>>> "Sascha" == Sascha Hauer <[email protected]> writes:

Hi,

 > This adds the ability to control barebox over serial lines. The regular
 > console is designed for human input and is unsuitable for controlling
 > barebox from scripts since characters can be lost on both ends, the data
 > stream contains escape sequences and the prompt cannot be easily matched
 > upon.
 > This approach is based on the RATP protocol. RATP packages start with a
 > binary 0x01 which does not occur in normal console data. Whenever a
 > 0x01 character is detected in the console barebox goes into RATP mode.
 > The RATP packets contain a simple structure with a command/respone
 > type and data for that type. Currently defined types are:


> +int barebox_ratp(struct console_device *cdev)
 > +{
 > +    void *buf = xmalloc(512);
 > +    int ret;
 > +    size_t len;
 > +    struct ratp_ctx *ctx;
 > +    struct ratp *ratp;
 > +
 > +    ctx = xzalloc(sizeof(*ctx));
 > +    ratp = &ctx->ratp;
 > +
 > +    ratp->send = ratp_send;
 > +    ratp->recv = ratp_recv;
 > +    ctx->cdev = cdev;
 > +
 > +    ret = ratp_establish(ratp, false, 0);
 > +    if (ret < 0)
 > +            return ret;
 > +
 > +    ret = ratp_console_register(ctx);
 > +    if (ret)
 > +            return ret;

You're leaking ctx and buf here (and buf below as well).

 > +
 > +    while (1) {
 > +            ret = ratp_poll(ratp);
 > +            if (ret == -EINTR)
 > +                    goto out;
 > +            if (ratp_closed(ratp))
 > +                    goto out;
 > +
 > +            len = 512;
 > +            ret = ratp_recv_data(ratp, buf, &len);
 > +            if (ret == -EAGAIN)
 > +                    continue;
 > +
 > +            if (ret < 0)
 > +                    goto out;
 > +
 > +            ret = ratp_bb_dispatch(ctx, buf, len);
 > +            if (ret)
 > +                    break;
 > +    }
 > +out:
 > +
 > +    console_unregister(&ctx->ratp_console);
 > +
 > +    free(ctx);
 > +
 > +    return ret;
 > +}


> +++ b/crypto/Kconfig
 > @@ -2,6 +2,7 @@ config CRC32
 >      bool
 
 >  config CRC16
 > +    default y

Why?

-- 
Bye, Peter Korsgaard

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to