spi-topcliff-pch: fix to use list_for_each_entry_safe() when delete list items
Since we will remove items off the list using list_del_init() we need to use a safe version of the list_for_each_entry() macro aptly named list_for_each_entry_safe(). Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Mark Brown <broonie@sirena.org.uk>
This commit is contained in:
parent
0113f22ee4
commit
cd8d984f0d
@ -615,7 +615,7 @@ static void pch_spi_set_tx(struct pch_spi_data *data, int *bpw)
|
|||||||
int size;
|
int size;
|
||||||
u32 n_writes;
|
u32 n_writes;
|
||||||
int j;
|
int j;
|
||||||
struct spi_message *pmsg;
|
struct spi_message *pmsg, *tmp;
|
||||||
const u8 *tx_buf;
|
const u8 *tx_buf;
|
||||||
const u16 *tx_sbuf;
|
const u16 *tx_sbuf;
|
||||||
|
|
||||||
@ -656,7 +656,7 @@ static void pch_spi_set_tx(struct pch_spi_data *data, int *bpw)
|
|||||||
if (!data->pkt_rx_buff) {
|
if (!data->pkt_rx_buff) {
|
||||||
/* flush queue and set status of all transfers to -ENOMEM */
|
/* flush queue and set status of all transfers to -ENOMEM */
|
||||||
dev_err(&data->master->dev, "%s :kzalloc failed\n", __func__);
|
dev_err(&data->master->dev, "%s :kzalloc failed\n", __func__);
|
||||||
list_for_each_entry(pmsg, data->queue.next, queue) {
|
list_for_each_entry_safe(pmsg, tmp, data->queue.next, queue) {
|
||||||
pmsg->status = -ENOMEM;
|
pmsg->status = -ENOMEM;
|
||||||
|
|
||||||
if (pmsg->complete != 0)
|
if (pmsg->complete != 0)
|
||||||
@ -703,7 +703,7 @@ static void pch_spi_set_tx(struct pch_spi_data *data, int *bpw)
|
|||||||
|
|
||||||
static void pch_spi_nomore_transfer(struct pch_spi_data *data)
|
static void pch_spi_nomore_transfer(struct pch_spi_data *data)
|
||||||
{
|
{
|
||||||
struct spi_message *pmsg;
|
struct spi_message *pmsg, *tmp;
|
||||||
dev_dbg(&data->master->dev, "%s called\n", __func__);
|
dev_dbg(&data->master->dev, "%s called\n", __func__);
|
||||||
/* Invoke complete callback
|
/* Invoke complete callback
|
||||||
* [To the spi core..indicating end of transfer] */
|
* [To the spi core..indicating end of transfer] */
|
||||||
@ -740,7 +740,7 @@ static void pch_spi_nomore_transfer(struct pch_spi_data *data)
|
|||||||
dev_dbg(&data->master->dev,
|
dev_dbg(&data->master->dev,
|
||||||
"%s suspend/remove initiated, flushing queue\n",
|
"%s suspend/remove initiated, flushing queue\n",
|
||||||
__func__);
|
__func__);
|
||||||
list_for_each_entry(pmsg, data->queue.next, queue) {
|
list_for_each_entry_safe(pmsg, tmp, data->queue.next, queue) {
|
||||||
pmsg->status = -EIO;
|
pmsg->status = -EIO;
|
||||||
|
|
||||||
if (pmsg->complete)
|
if (pmsg->complete)
|
||||||
@ -1187,7 +1187,7 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
|
|||||||
|
|
||||||
static void pch_spi_process_messages(struct work_struct *pwork)
|
static void pch_spi_process_messages(struct work_struct *pwork)
|
||||||
{
|
{
|
||||||
struct spi_message *pmsg;
|
struct spi_message *pmsg, *tmp;
|
||||||
struct pch_spi_data *data;
|
struct pch_spi_data *data;
|
||||||
int bpw;
|
int bpw;
|
||||||
|
|
||||||
@ -1199,7 +1199,7 @@ static void pch_spi_process_messages(struct work_struct *pwork)
|
|||||||
if (data->board_dat->suspend_sts || (data->status == STATUS_EXITING)) {
|
if (data->board_dat->suspend_sts || (data->status == STATUS_EXITING)) {
|
||||||
dev_dbg(&data->master->dev, "%s suspend/remove initiated,"
|
dev_dbg(&data->master->dev, "%s suspend/remove initiated,"
|
||||||
"flushing queue\n", __func__);
|
"flushing queue\n", __func__);
|
||||||
list_for_each_entry(pmsg, data->queue.next, queue) {
|
list_for_each_entry_safe(pmsg, tmp, data->queue.next, queue) {
|
||||||
pmsg->status = -EIO;
|
pmsg->status = -EIO;
|
||||||
|
|
||||||
if (pmsg->complete != 0) {
|
if (pmsg->complete != 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user