diff options
Diffstat (limited to 'drivers/crypto/hifn_795x.c')
| -rw-r--r-- | drivers/crypto/hifn_795x.c | 38 | 
1 files changed, 20 insertions, 18 deletions
diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c index a84250a5dd5..12fea3e2234 100644 --- a/drivers/crypto/hifn_795x.c +++ b/drivers/crypto/hifn_795x.c @@ -821,8 +821,8 @@ static int hifn_register_rng(struct hifn_device *dev)  	/*  	 * We must wait at least 256 Pk_clk cycles between two reads of the rng.  	 */ -	dev->rng_wait_time	= DIV_ROUND_UP(NSEC_PER_SEC, dev->pk_clk_freq) * -				  256; +	dev->rng_wait_time	= DIV_ROUND_UP_ULL(NSEC_PER_SEC, +						   dev->pk_clk_freq) * 256;  	dev->rng.name		= dev->name;  	dev->rng.data_present	= hifn_rng_data_present, @@ -1731,9 +1731,9 @@ static int ablkcipher_get(void *saddr, unsigned int *srestp, unsigned int offset  	while (size) {  		copy = min3(srest, dst->length, size); -		daddr = kmap_atomic(sg_page(dst), KM_IRQ0); +		daddr = kmap_atomic(sg_page(dst));  		memcpy(daddr + dst->offset + offset, saddr, copy); -		kunmap_atomic(daddr, KM_IRQ0); +		kunmap_atomic(daddr);  		nbytes -= copy;  		size -= copy; @@ -1793,17 +1793,17 @@ static void hifn_process_ready(struct ablkcipher_request *req, int error)  				continue;  			} -			saddr = kmap_atomic(sg_page(t), KM_SOFTIRQ0); +			saddr = kmap_atomic(sg_page(t));  			err = ablkcipher_get(saddr, &t->length, t->offset,  					dst, nbytes, &nbytes);  			if (err < 0) { -				kunmap_atomic(saddr, KM_SOFTIRQ0); +				kunmap_atomic(saddr);  				break;  			}  			idx += err; -			kunmap_atomic(saddr, KM_SOFTIRQ0); +			kunmap_atomic(saddr);  		}  		hifn_cipher_walk_exit(&rctx->walk); @@ -2494,7 +2494,8 @@ static int hifn_alg_alloc(struct hifn_device *dev, struct hifn_alg_template *t)  		 t->drv_name, dev->name);  	alg->alg.cra_priority = 300; -	alg->alg.cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | CRYPTO_ALG_ASYNC; +	alg->alg.cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | +				CRYPTO_ALG_KERN_DRIVER_ONLY | CRYPTO_ALG_ASYNC;  	alg->alg.cra_blocksize = t->bsize;  	alg->alg.cra_ctxsize = sizeof(struct hifn_context);  	alg->alg.cra_alignmask = 0; @@ -2560,7 +2561,7 @@ static void hifn_tasklet_callback(unsigned long data)  		hifn_process_queue(dev);  } -static int __devinit hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id) +static int hifn_probe(struct pci_dev *pdev, const struct pci_device_id *id)  {  	int err, i;  	struct hifn_device *dev; @@ -2610,14 +2611,17 @@ static int __devinit hifn_probe(struct pci_dev *pdev, const struct pci_device_id  		size = pci_resource_len(pdev, i);  		dev->bar[i] = ioremap_nocache(addr, size); -		if (!dev->bar[i]) +		if (!dev->bar[i]) { +			err = -ENOMEM;  			goto err_out_unmap_bars; +		}  	}  	dev->desc_virt = pci_alloc_consistent(pdev, sizeof(struct hifn_dma),  			&dev->desc_dma);  	if (!dev->desc_virt) {  		dprintk("Failed to allocate descriptor rings.\n"); +		err = -ENOMEM;  		goto err_out_unmap_bars;  	}  	memset(dev->desc_virt, 0, sizeof(struct hifn_dma)); @@ -2672,7 +2676,7 @@ err_out_stop_device:  	hifn_reset_dma(dev, 1);  	hifn_stop_device(dev);  err_out_free_irq: -	free_irq(dev->irq, dev->name); +	free_irq(dev->irq, dev);  	tasklet_kill(&dev->tasklet);  err_out_free_desc:  	pci_free_consistent(pdev, sizeof(struct hifn_dma), @@ -2692,7 +2696,7 @@ err_out_disable_pci_device:  	return err;  } -static void __devexit hifn_remove(struct pci_dev *pdev) +static void hifn_remove(struct pci_dev *pdev)  {  	int i;  	struct hifn_device *dev; @@ -2707,7 +2711,7 @@ static void __devexit hifn_remove(struct pci_dev *pdev)  		hifn_reset_dma(dev, 1);  		hifn_stop_device(dev); -		free_irq(dev->irq, dev->name); +		free_irq(dev->irq, dev);  		tasklet_kill(&dev->tasklet);  		hifn_flush(dev); @@ -2736,7 +2740,7 @@ static struct pci_driver hifn_pci_driver = {  	.name     = "hifn795x",  	.id_table = hifn_pci_tbl,  	.probe    = hifn_probe, -	.remove   = __devexit_p(hifn_remove), +	.remove   = hifn_remove,  };  static int __init hifn_init(void) @@ -2744,10 +2748,8 @@ static int __init hifn_init(void)  	unsigned int freq;  	int err; -	if (sizeof(dma_addr_t) > 4) { -		printk(KERN_INFO "HIFN supports only 32-bit addresses.\n"); -		return -EINVAL; -	} +	/* HIFN supports only 32-bit addresses */ +	BUILD_BUG_ON(sizeof(dma_addr_t) != 4);  	if (strncmp(hifn_pll_ref, "ext", 3) &&  	    strncmp(hifn_pll_ref, "pci", 3)) {  | 
