<https://github.com/martinezjavier/ldd3/blob/master/scull/main.c#L601>

```
static void scull_setup_cdev(struct scull_dev *dev, int index)
{
    int err, devno = MKDEV(scull_major, scull_minor + index);

    cdev_init(&dev->cdev, &scull_fops); 
    dev->cdev.owner = THIS_MODULE;
    dev->cdev.ops = &scull_fops;

```

we can see `scull_fops` was assigned twice by `cdev_init()` and `cdev.ops`, why?