@@ -714,7 +714,7 @@ static ssize_t __c2port_read_flash_data(struct c2port_device *dev,
714
714
}
715
715
716
716
static ssize_t c2port_read_flash_data (struct file * filp , struct kobject * kobj ,
717
- struct bin_attribute * attr ,
717
+ const struct bin_attribute * attr ,
718
718
char * buffer , loff_t offset , size_t count )
719
719
{
720
720
struct c2port_device * c2dev = dev_get_drvdata (kobj_to_dev (kobj ));
@@ -829,7 +829,7 @@ static ssize_t __c2port_write_flash_data(struct c2port_device *dev,
829
829
}
830
830
831
831
static ssize_t c2port_write_flash_data (struct file * filp , struct kobject * kobj ,
832
- struct bin_attribute * attr ,
832
+ const struct bin_attribute * attr ,
833
833
char * buffer , loff_t offset , size_t count )
834
834
{
835
835
struct c2port_device * c2dev = dev_get_drvdata (kobj_to_dev (kobj ));
@@ -849,8 +849,8 @@ static ssize_t c2port_write_flash_data(struct file *filp, struct kobject *kobj,
849
849
return ret ;
850
850
}
851
851
/* size is computed at run-time */
852
- static BIN_ATTR (flash_data , 0644 , c2port_read_flash_data ,
853
- c2port_write_flash_data , 0 ) ;
852
+ static const BIN_ATTR (flash_data , 0644 , c2port_read_flash_data ,
853
+ c2port_write_flash_data , 0 ) ;
854
854
855
855
/*
856
856
* Class attributes
@@ -869,14 +869,27 @@ static struct attribute *c2port_attrs[] = {
869
869
NULL ,
870
870
};
871
871
872
- static struct bin_attribute * c2port_bin_attrs [] = {
872
+ static const struct bin_attribute * const c2port_bin_attrs [] = {
873
873
& bin_attr_flash_data ,
874
874
NULL ,
875
875
};
876
876
877
+ static size_t c2port_bin_attr_size (struct kobject * kobj ,
878
+ const struct bin_attribute * attr ,
879
+ int i )
880
+ {
881
+ struct c2port_device * c2dev = dev_get_drvdata (kobj_to_dev (kobj ));
882
+
883
+ if (attr == & bin_attr_flash_data )
884
+ return c2dev -> ops -> blocks_num * c2dev -> ops -> block_size ;
885
+
886
+ return attr -> size ;
887
+ }
888
+
877
889
static const struct attribute_group c2port_group = {
878
890
.attrs = c2port_attrs ,
879
- .bin_attrs = c2port_bin_attrs ,
891
+ .bin_attrs_new = c2port_bin_attrs ,
892
+ .bin_size = c2port_bin_attr_size ,
880
893
};
881
894
882
895
static const struct attribute_group * c2port_groups [] = {
@@ -913,8 +926,6 @@ struct c2port_device *c2port_device_register(char *name,
913
926
goto error_idr_alloc ;
914
927
c2dev -> id = ret ;
915
928
916
- bin_attr_flash_data .size = ops -> blocks_num * ops -> block_size ;
917
-
918
929
c2dev -> dev = device_create (c2port_class , NULL , 0 , c2dev ,
919
930
"c2port%d" , c2dev -> id );
920
931
if (IS_ERR (c2dev -> dev )) {
0 commit comments