lkml.org 
[lkml]   [2011]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] tty/n_gsm: fix a bug in gsm_dlci_data_output (adaption = 2 case)
    Date
    in adaption=2 case we should put 1 or 2 byte with modem status bits
    at the beginning of a buffer pointed by "dp". n_gsm use 1 byte case,
    so it allocate a buffer of len + 1 size. As result we should:
    * put 1 byte of modem status bits
    * increase data pointer
    * put "len" bytes of data
    but actually we have:
    * increase first byte with the value of modem status bits
    * decrease "len"
    * put orig_len - 1 bytes of data starting from the buffer beggining
    This is evidently wrong.

    Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@gmail.com>
    ---
    drivers/tty/n_gsm.c | 3 +--
    1 files changed, 1 insertions(+), 2 deletions(-)

    diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
    index 8a50e4e..143dc5e 100644
    --- a/drivers/tty/n_gsm.c
    +++ b/drivers/tty/n_gsm.c
    @@ -834,8 +834,7 @@ static int gsm_dlci_data_output(struct gsm_mux *gsm, struct gsm_dlci *dlci)
    break;
    case 2: /* Unstructed with modem bits. Always one byte as we never
    send inline break data */
    - *dp += gsm_encode_modem(dlci);
    - len--;
    + *dp++ = gsm_encode_modem(dlci);
    break;
    }
    WARN_ON(kfifo_out_locked(dlci->fifo, dp , len, &dlci->lock) != len);
    --
    1.7.5.4


    \
     
     \ /
      Last update: 2011-09-23 17:25    [W:0.020 / U:2.208 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site