@@ -439,9 +439,7 @@ impl SndSocAopData {
439439struct SndSocAopDriver ( * mut bindings:: snd_card ) ;
440440
441441fn copy_str ( target : & mut [ u8 ] , source : & [ u8 ] ) {
442- for i in 0 ..source. len ( ) {
443- target[ i] = source[ i] ;
444- }
442+ target[ ..source. len ( ) ] . copy_from_slice ( source)
445443}
446444
447445unsafe fn dmaengine_slave_config (
@@ -613,47 +611,28 @@ impl SndSocAopDriver {
613611 . property_read :: < CString > ( c_str ! ( "apple,machine-kind" ) )
614612 . required_by ( & data. dev ) ?;
615613 unsafe {
616- let name = b"aop_audio\0 " ;
617- let target = ( * this. 0 ) . driver . as_mut ( ) ;
618- copy_str ( target, name. as_ref ( ) ) ;
614+ copy_str ( & mut ( * this. 0 ) . driver , c"aop_audio" . to_bytes_with_nul ( ) ) ;
619615 }
616+ let id_str = CString :: try_from_fmt ( fmt ! ( "Apple{}HPAI" , * chassis) ) ?;
620617 unsafe {
621- let prefix = b"Apple" ;
622- let target = ( * this. 0 ) . id . as_mut ( ) ;
623- copy_str ( target, prefix. as_ref ( ) ) ;
624- let mut ptr = prefix. len ( ) ;
625- copy_str ( & mut target[ ptr..] , chassis. to_bytes_with_nul ( ) ) ;
626- ptr += chassis. count_bytes ( ) ;
627- let suffix = b"HPAI\0 " ;
628- copy_str ( & mut target[ ptr..] , suffix) ;
618+ copy_str ( & mut ( * this. 0 ) . id , id_str. to_bytes_with_nul ( ) ) ;
629619 }
630- let longname_suffix = b"High-Power Audio Interface\0 " ;
631- let mut machine_name = KVec :: with_capacity (
632- chassis. count_bytes ( ) + 2 + machine_kind. count_bytes ( ) + longname_suffix. len ( ) ,
633- GFP_KERNEL ,
634- ) ?;
635- machine_name. extend_from_slice ( machine_kind. to_bytes_with_nul ( ) , GFP_KERNEL ) ?;
636- let last_item = machine_name. len ( ) - 1 ;
637- machine_name[ last_item] = b' ' ;
638- machine_name. extend_from_slice ( chassis. to_bytes_with_nul ( ) , GFP_KERNEL ) ?;
639- let last_item = machine_name. len ( ) - 1 ;
640- machine_name[ last_item] = b' ' ;
620+ let shortname = CString :: try_from_fmt ( fmt ! ( "{} {} HPAI" , * machine_kind, * chassis) ) ?;
641621 unsafe {
642- let target = ( * this. 0 ) . shortname . as_mut ( ) ;
643- copy_str ( target, machine_name. as_ref ( ) ) ;
644- let ptr = machine_name. len ( ) ;
645- let suffix = b"HPAI\0 " ;
646- copy_str ( & mut target[ ptr..] , suffix) ;
622+ copy_str ( & mut ( * this. 0 ) . shortname , shortname. to_bytes_with_nul ( ) ) ;
647623 }
648- machine_name. extend_from_slice ( longname_suffix, GFP_KERNEL ) ?;
624+ let longname = CString :: try_from_fmt ( fmt ! (
625+ "{} {} High-Power Audio Interface" ,
626+ * machine_kind,
627+ * chassis
628+ ) ) ?;
649629 unsafe {
650- let target = ( * this. 0 ) . longname . as_mut ( ) ;
651- copy_str ( target, machine_name. as_ref ( ) ) ;
630+ copy_str ( & mut ( * this. 0 ) . longname , longname. to_bytes_with_nul ( ) ) ;
652631 }
653632
654633 let mut pcm = ptr:: null_mut ( ) ;
655634 let ret =
656- unsafe { bindings:: snd_pcm_new ( this. 0 , machine_name . as_ptr ( ) as _ , 0 , 0 , 1 , & mut pcm) } ;
635+ unsafe { bindings:: snd_pcm_new ( this. 0 , longname . as_ptr ( ) as _ , 0 , 0 , 1 , & mut pcm) } ;
657636 if ret < 0 {
658637 dev_err ! ( data. dev, "Unable to allocate PCM device" ) ;
659638 return Err ( Error :: from_errno ( ret) ) ;
@@ -671,8 +650,7 @@ impl SndSocAopDriver {
671650 ( * pcm) . private_data = data. clone ( ) . into_foreign ( ) as _ ;
672651 ( * pcm) . private_free = Some ( aop_pcm_free_private) ;
673652 ( * pcm) . info_flags = 0 ;
674- let name = c"aop_audio" ;
675- copy_str ( ( * pcm) . name . as_mut ( ) , name. to_bytes ( ) ) ;
653+ copy_str ( & mut ( * pcm) . name , c"aop_audio" . to_bytes_with_nul ( ) ) ;
676654 }
677655
678656 let ret = unsafe { bindings:: snd_card_register ( this. 0 ) } ;
0 commit comments