@@ -196,20 +196,14 @@ static void atmel_tdes_write_n(struct atmel_tdes_dev *dd, u32 offset,
196196 atmel_tdes_write (dd , offset , * value );
197197}
198198
199- static struct atmel_tdes_dev * atmel_tdes_find_dev ( struct atmel_tdes_ctx * ctx )
199+ static struct atmel_tdes_dev * atmel_tdes_dev_alloc ( void )
200200{
201- struct atmel_tdes_dev * tdes_dd = NULL ;
202- struct atmel_tdes_dev * tmp ;
201+ struct atmel_tdes_dev * tmp , * tdes_dd = NULL ;
203202
204203 spin_lock_bh (& atmel_tdes .lock );
205- if (!ctx -> dd ) {
206- list_for_each_entry (tmp , & atmel_tdes .dev_list , list ) {
207- tdes_dd = tmp ;
208- break ;
209- }
210- ctx -> dd = tdes_dd ;
211- } else {
212- tdes_dd = ctx -> dd ;
204+ list_for_each_entry (tmp , & atmel_tdes .dev_list , list ) {
205+ tdes_dd = tmp ;
206+ break ;
213207 }
214208 spin_unlock_bh (& atmel_tdes .lock );
215209
@@ -320,7 +314,7 @@ static int atmel_tdes_crypt_pdc_stop(struct atmel_tdes_dev *dd)
320314 dd -> buf_out , dd -> buflen , dd -> dma_size , 1 );
321315 if (count != dd -> dma_size ) {
322316 err = - EINVAL ;
323- pr_err ( "not all data converted: %zu\n" , count );
317+ dev_dbg ( dd -> dev , "not all data converted: %zu\n" , count );
324318 }
325319 }
326320
@@ -337,24 +331,24 @@ static int atmel_tdes_buff_init(struct atmel_tdes_dev *dd)
337331 dd -> buflen &= ~(DES_BLOCK_SIZE - 1 );
338332
339333 if (!dd -> buf_in || !dd -> buf_out ) {
340- dev_err (dd -> dev , "unable to alloc pages.\n" );
334+ dev_dbg (dd -> dev , "unable to alloc pages.\n" );
341335 goto err_alloc ;
342336 }
343337
344338 /* MAP here */
345339 dd -> dma_addr_in = dma_map_single (dd -> dev , dd -> buf_in ,
346340 dd -> buflen , DMA_TO_DEVICE );
347- if ( dma_mapping_error (dd -> dev , dd -> dma_addr_in )) {
348- dev_err ( dd -> dev , "dma %zd bytes error\n" , dd -> buflen );
349- err = - EINVAL ;
341+ err = dma_mapping_error (dd -> dev , dd -> dma_addr_in );
342+ if ( err ) {
343+ dev_dbg ( dd -> dev , "dma %zd bytes error\n" , dd -> buflen ) ;
350344 goto err_map_in ;
351345 }
352346
353347 dd -> dma_addr_out = dma_map_single (dd -> dev , dd -> buf_out ,
354348 dd -> buflen , DMA_FROM_DEVICE );
355- if ( dma_mapping_error (dd -> dev , dd -> dma_addr_out )) {
356- dev_err ( dd -> dev , "dma %zd bytes error\n" , dd -> buflen );
357- err = - EINVAL ;
349+ err = dma_mapping_error (dd -> dev , dd -> dma_addr_out );
350+ if ( err ) {
351+ dev_dbg ( dd -> dev , "dma %zd bytes error\n" , dd -> buflen ) ;
358352 goto err_map_out ;
359353 }
360354
@@ -367,8 +361,6 @@ static int atmel_tdes_buff_init(struct atmel_tdes_dev *dd)
367361err_alloc :
368362 free_page ((unsigned long )dd -> buf_out );
369363 free_page ((unsigned long )dd -> buf_in );
370- if (err )
371- pr_err ("error: %d\n" , err );
372364 return err ;
373365}
374366
@@ -520,14 +512,14 @@ static int atmel_tdes_crypt_start(struct atmel_tdes_dev *dd)
520512
521513 err = dma_map_sg (dd -> dev , dd -> in_sg , 1 , DMA_TO_DEVICE );
522514 if (!err ) {
523- dev_err (dd -> dev , "dma_map_sg() error\n" );
515+ dev_dbg (dd -> dev , "dma_map_sg() error\n" );
524516 return - EINVAL ;
525517 }
526518
527519 err = dma_map_sg (dd -> dev , dd -> out_sg , 1 ,
528520 DMA_FROM_DEVICE );
529521 if (!err ) {
530- dev_err (dd -> dev , "dma_map_sg() error\n" );
522+ dev_dbg (dd -> dev , "dma_map_sg() error\n" );
531523 dma_unmap_sg (dd -> dev , dd -> in_sg , 1 ,
532524 DMA_TO_DEVICE );
533525 return - EINVAL ;
@@ -646,7 +638,6 @@ static int atmel_tdes_handle_queue(struct atmel_tdes_dev *dd,
646638 rctx -> mode &= TDES_FLAGS_MODE_MASK ;
647639 dd -> flags = (dd -> flags & ~TDES_FLAGS_MODE_MASK ) | rctx -> mode ;
648640 dd -> ctx = ctx ;
649- ctx -> dd = dd ;
650641
651642 err = atmel_tdes_write_ctrl (dd );
652643 if (!err )
@@ -679,7 +670,7 @@ static int atmel_tdes_crypt_dma_stop(struct atmel_tdes_dev *dd)
679670 dd -> buf_out , dd -> buflen , dd -> dma_size , 1 );
680671 if (count != dd -> dma_size ) {
681672 err = - EINVAL ;
682- pr_err ( "not all data converted: %zu\n" , count );
673+ dev_dbg ( dd -> dev , "not all data converted: %zu\n" , count );
683674 }
684675 }
685676 }
@@ -691,35 +682,39 @@ static int atmel_tdes_crypt(struct skcipher_request *req, unsigned long mode)
691682 struct crypto_skcipher * skcipher = crypto_skcipher_reqtfm (req );
692683 struct atmel_tdes_ctx * ctx = crypto_skcipher_ctx (skcipher );
693684 struct atmel_tdes_reqctx * rctx = skcipher_request_ctx (req );
685+ struct device * dev = ctx -> dd -> dev ;
686+
687+ if (!req -> cryptlen )
688+ return 0 ;
694689
695690 switch (mode & TDES_FLAGS_OPMODE_MASK ) {
696691 case TDES_FLAGS_CFB8 :
697692 if (!IS_ALIGNED (req -> cryptlen , CFB8_BLOCK_SIZE )) {
698- pr_err ( "request size is not exact amount of CFB8 blocks\n" );
693+ dev_dbg ( dev , "request size is not exact amount of CFB8 blocks\n" );
699694 return - EINVAL ;
700695 }
701696 ctx -> block_size = CFB8_BLOCK_SIZE ;
702697 break ;
703698
704699 case TDES_FLAGS_CFB16 :
705700 if (!IS_ALIGNED (req -> cryptlen , CFB16_BLOCK_SIZE )) {
706- pr_err ( "request size is not exact amount of CFB16 blocks\n" );
701+ dev_dbg ( dev , "request size is not exact amount of CFB16 blocks\n" );
707702 return - EINVAL ;
708703 }
709704 ctx -> block_size = CFB16_BLOCK_SIZE ;
710705 break ;
711706
712707 case TDES_FLAGS_CFB32 :
713708 if (!IS_ALIGNED (req -> cryptlen , CFB32_BLOCK_SIZE )) {
714- pr_err ( "request size is not exact amount of CFB32 blocks\n" );
709+ dev_dbg ( dev , "request size is not exact amount of CFB32 blocks\n" );
715710 return - EINVAL ;
716711 }
717712 ctx -> block_size = CFB32_BLOCK_SIZE ;
718713 break ;
719714
720715 default :
721716 if (!IS_ALIGNED (req -> cryptlen , DES_BLOCK_SIZE )) {
722- pr_err ( "request size is not exact amount of DES blocks\n" );
717+ dev_dbg ( dev , "request size is not exact amount of DES blocks\n" );
723718 return - EINVAL ;
724719 }
725720 ctx -> block_size = DES_BLOCK_SIZE ;
@@ -897,14 +892,13 @@ static int atmel_tdes_ofb_decrypt(struct skcipher_request *req)
897892static int atmel_tdes_init_tfm (struct crypto_skcipher * tfm )
898893{
899894 struct atmel_tdes_ctx * ctx = crypto_skcipher_ctx (tfm );
900- struct atmel_tdes_dev * dd ;
901-
902- crypto_skcipher_set_reqsize (tfm , sizeof (struct atmel_tdes_reqctx ));
903895
904- dd = atmel_tdes_find_dev ( ctx );
905- if (!dd )
896+ ctx -> dd = atmel_tdes_dev_alloc ( );
897+ if (!ctx -> dd )
906898 return - ENODEV ;
907899
900+ crypto_skcipher_set_reqsize (tfm , sizeof (struct atmel_tdes_reqctx ));
901+
908902 return 0 ;
909903}
910904
@@ -999,7 +993,7 @@ static struct skcipher_alg tdes_algs[] = {
999993{
1000994 .base .cra_name = "ofb(des)" ,
1001995 .base .cra_driver_name = "atmel-ofb-des" ,
1002- .base .cra_blocksize = DES_BLOCK_SIZE ,
996+ .base .cra_blocksize = 1 ,
1003997 .base .cra_alignmask = 0x7 ,
1004998
1005999 .min_keysize = DES_KEY_SIZE ,
0 commit comments