I'm writing a basic char device driver for Linux kernel.
For this, the code flow I have considered is as follows:

1. `alloc_chrdev_region()` -> to use dynamic allocation of major number
2. `class_create()` -> to create device class in sysfs
3. `device_creat()` -> to create device under /dev/
4. `cdv_init()` -> to initialize char device structure
5. `cdev_add()` -> to add my device structure in kernel

I have added read, write, open, release methods in code.

When I try to read device file under /dev/ my read method is called.
But when I try to write on /dev/ file using echo it gives error

> 
> "bash: /dev/scull: Permission denied"
> 
> 
> 

I have checked permissions of file using `ls -l`, and I have permissions to read or write on this file.

This problem occurs for every device driver module I have written. It works well in on another machine.

I'm working on ubuntu 15.10, custom compiled kernel 4.3.0

1. the result of `ls -l /dev/scull`:

```
crw------- 1 root root 247, 0 Dec 30 18:06 /dev/scull

```
2. the exact command I used to open the file

```
$ sudo echo 54 > /dev/scull

```
3. the source code for the open implementation

```
ssize_t scull_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos){
     pr_alert("Device Written\n");
     return 0;
}

```

Behavior I'm seeking here is, I should be able to see `'Device Written'` in `dmesg` ouput?