mirror of
https://github.com/torvalds/linux.git
synced 2024-12-05 18:41:23 +00:00
mmc: rtsx: check sg_count before long data xfer
Check sg_count before sending long data xfer. Because dma_map_sg() return int, and sg_count may be negative, so using int instead of unsigned. Signed-off-by: Micky Ching <micky_ching@realsil.com.cn> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
b22217f966
commit
be186ad582
@ -54,9 +54,9 @@ struct realtek_pci_sdmmc {
|
||||
#define SDMMC_POWER_ON 1
|
||||
#define SDMMC_POWER_OFF 0
|
||||
|
||||
unsigned int sg_count;
|
||||
int sg_count;
|
||||
s32 cookie;
|
||||
unsigned int cookie_sg_count;
|
||||
int cookie_sg_count;
|
||||
bool using_cookie;
|
||||
};
|
||||
|
||||
@ -557,6 +557,13 @@ static int sd_rw_multi(struct realtek_pci_sdmmc *host, struct mmc_request *mrq)
|
||||
{
|
||||
struct mmc_data *data = mrq->data;
|
||||
|
||||
if (host->sg_count < 0) {
|
||||
data->error = host->sg_count;
|
||||
dev_dbg(sdmmc_dev(host), "%s: sg_count = %d is invalid\n",
|
||||
__func__, host->sg_count);
|
||||
return data->error;
|
||||
}
|
||||
|
||||
if (data->flags & MMC_DATA_READ)
|
||||
return sd_read_long_data(host, mrq);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user