Commit 4eaefb39 authored by Tony Luck's avatar Tony Luck

Auto-update from upstream

parents 3a931d4c 30d5b64b
...@@ -242,7 +242,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl, ...@@ -242,7 +242,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
dma_addr_t dma_next = 0, dma_addr; dma_addr_t dma_next = 0, dma_addr;
unsigned long flags; unsigned long flags;
struct scatterlist *s, *outs, *segstart; struct scatterlist *s, *outs, *segstart;
int outcount; int outcount, incount;
unsigned long handle; unsigned long handle;
BUG_ON(direction == DMA_NONE); BUG_ON(direction == DMA_NONE);
...@@ -252,6 +252,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl, ...@@ -252,6 +252,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
outs = s = segstart = &sglist[0]; outs = s = segstart = &sglist[0];
outcount = 1; outcount = 1;
incount = nelems;
handle = 0; handle = 0;
/* Init first segment length for backout at failure */ /* Init first segment length for backout at failure */
...@@ -338,10 +339,10 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl, ...@@ -338,10 +339,10 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
DBG("mapped %d elements:\n", outcount); DBG("mapped %d elements:\n", outcount);
/* For the sake of iommu_free_sg, we clear out the length in the /* For the sake of iommu_unmap_sg, we clear out the length in the
* next entry of the sglist if we didn't fill the list completely * next entry of the sglist if we didn't fill the list completely
*/ */
if (outcount < nelems) { if (outcount < incount) {
outs++; outs++;
outs->dma_address = DMA_ERROR_CODE; outs->dma_address = DMA_ERROR_CODE;
outs->dma_length = 0; outs->dma_length = 0;
......
...@@ -180,7 +180,9 @@ static ssize_t driver_bind(struct device_driver *drv, ...@@ -180,7 +180,9 @@ static ssize_t driver_bind(struct device_driver *drv,
up(&dev->sem); up(&dev->sem);
put_device(dev); put_device(dev);
} }
if (err)
return err; return err;
return count;
} }
static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind); static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind);
......
...@@ -312,6 +312,8 @@ struct pnp_dev * pnp_request_card_device(struct pnp_card_link *clink, const char ...@@ -312,6 +312,8 @@ struct pnp_dev * pnp_request_card_device(struct pnp_card_link *clink, const char
if (drv->link.driver.probe) { if (drv->link.driver.probe) {
if (drv->link.driver.probe(&dev->dev)) { if (drv->link.driver.probe(&dev->dev)) {
dev->dev.driver = NULL; dev->dev.driver = NULL;
dev->card_link = NULL;
up_write(&dev->dev.bus->subsys.rwsem);
return NULL; return NULL;
} }
} }
......
...@@ -175,7 +175,7 @@ ToDo/Notes: ...@@ -175,7 +175,7 @@ ToDo/Notes:
the ntfs inode in memory if present. Also, the ntfs inode has its the ntfs inode in memory if present. Also, the ntfs inode has its
own locking so it does not matter if the vfs inode is locked. own locking so it does not matter if the vfs inode is locked.
- Fix bug in mft record writing where we forgot to set the device in - Fix bug in mft record writing where we forgot to set the device in
the buffers when mapping them after the VM had discarded them the buffers when mapping them after the VM had discarded them.
Thanks to Martin MOKREJŠ for the bug report. Thanks to Martin MOKREJŠ for the bug report.
2.1.22 - Many bug and race fixes and error handling improvements. 2.1.22 - Many bug and race fixes and error handling improvements.
......
...@@ -924,6 +924,7 @@ static int ntfs_write_mst_block(struct page *page, ...@@ -924,6 +924,7 @@ static int ntfs_write_mst_block(struct page *page,
LCN lcn; LCN lcn;
unsigned int vcn_ofs; unsigned int vcn_ofs;
bh->b_bdev = vol->sb->s_bdev;
/* Obtain the vcn and offset of the current block. */ /* Obtain the vcn and offset of the current block. */
vcn = (VCN)block << bh_size_bits; vcn = (VCN)block << bh_size_bits;
vcn_ofs = vcn & vol->cluster_size_mask; vcn_ofs = vcn & vol->cluster_size_mask;
......
...@@ -765,6 +765,7 @@ snd_pmac_ctrl_intr(int irq, void *devid, struct pt_regs *regs) ...@@ -765,6 +765,7 @@ snd_pmac_ctrl_intr(int irq, void *devid, struct pt_regs *regs)
*/ */
static void snd_pmac_sound_feature(pmac_t *chip, int enable) static void snd_pmac_sound_feature(pmac_t *chip, int enable)
{ {
if (ppc_md.feature_call)
ppc_md.feature_call(PMAC_FTR_SOUND_CHIP_ENABLE, chip->node, 0, enable); ppc_md.feature_call(PMAC_FTR_SOUND_CHIP_ENABLE, chip->node, 0, enable);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment