Loading drivers/char/diag/diagchar_core.c +17 −27 Original line number Diff line number Diff line Loading @@ -3093,9 +3093,14 @@ static int diag_process_apps_data_hdlc(unsigned char *buf, int len, send.last = (void *)(buf + len - 1); send.terminate = 1; wait_for_buffer: wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); if (data->flushed) { spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto wait_for_buffer; } if (!data->buf) { data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, Loading @@ -3118,19 +3123,7 @@ static int diag_process_apps_data_hdlc(unsigned char *buf, int len, ret = -EIO; goto fail_free_buf; } wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, POOL_TYPE_HDLC); if (!data->buf) { ret = PKT_DROP; spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto fail_ret; } data->allocated = 1; data->flushed = 0; goto wait_for_buffer; } enc.dest = data->buf + data->len; Loading @@ -3152,9 +3145,14 @@ static int diag_process_apps_data_hdlc(unsigned char *buf, int len, ret = -EIO; goto fail_free_buf; } wait_for_agg_buff: wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); if (data->flushed) { spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto wait_for_agg_buff; } data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, POOL_TYPE_HDLC); Loading Loading @@ -3224,9 +3222,14 @@ static int diag_process_apps_data_non_hdlc(unsigned char *buf, int len, __func__, buf, len); return -EIO; } wait_for_buffer: wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); if (data->flushed) { spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto wait_for_buffer; } if (!data->buf) { data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, Loading @@ -3248,20 +3251,7 @@ static int diag_process_apps_data_non_hdlc(unsigned char *buf, int len, ret = -EIO; goto fail_free_buf; } wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, POOL_TYPE_HDLC); if (!data->buf) { ret = PKT_DROP; spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto fail_ret; } data->allocated = 1; data->flushed = 0; goto wait_for_buffer; } header.start = CONTROL_CHAR; Loading Loading
drivers/char/diag/diagchar_core.c +17 −27 Original line number Diff line number Diff line Loading @@ -3093,9 +3093,14 @@ static int diag_process_apps_data_hdlc(unsigned char *buf, int len, send.last = (void *)(buf + len - 1); send.terminate = 1; wait_for_buffer: wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); if (data->flushed) { spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto wait_for_buffer; } if (!data->buf) { data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, Loading @@ -3118,19 +3123,7 @@ static int diag_process_apps_data_hdlc(unsigned char *buf, int len, ret = -EIO; goto fail_free_buf; } wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, POOL_TYPE_HDLC); if (!data->buf) { ret = PKT_DROP; spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto fail_ret; } data->allocated = 1; data->flushed = 0; goto wait_for_buffer; } enc.dest = data->buf + data->len; Loading @@ -3152,9 +3145,14 @@ static int diag_process_apps_data_hdlc(unsigned char *buf, int len, ret = -EIO; goto fail_free_buf; } wait_for_agg_buff: wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); if (data->flushed) { spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto wait_for_agg_buff; } data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, POOL_TYPE_HDLC); Loading Loading @@ -3224,9 +3222,14 @@ static int diag_process_apps_data_non_hdlc(unsigned char *buf, int len, __func__, buf, len); return -EIO; } wait_for_buffer: wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); if (data->flushed) { spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto wait_for_buffer; } if (!data->buf) { data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, Loading @@ -3248,20 +3251,7 @@ static int diag_process_apps_data_non_hdlc(unsigned char *buf, int len, ret = -EIO; goto fail_free_buf; } wait_event_interruptible(driver->hdlc_wait_q, (data->flushed == 0)); spin_lock_irqsave(&driver->diagmem_lock, flags); data->buf = diagmem_alloc(driver, DIAG_MAX_HDLC_BUF_SIZE + APF_DIAG_PADDING, POOL_TYPE_HDLC); if (!data->buf) { ret = PKT_DROP; spin_unlock_irqrestore(&driver->diagmem_lock, flags); goto fail_ret; } data->allocated = 1; data->flushed = 0; goto wait_for_buffer; } header.start = CONTROL_CHAR; Loading