Dear list members, I have a question about source code copyright. I hope I can get an answer here. Could someone please explain what is the level of copy which violets copyright? For example take 3 cases. Case 1: Exact replica of source code. Ans: Violation Case 2: Functions and variables renamed. Ans: Violation Case 3: Functions moved up/down, some function call deleted and some new function calls introduced. But overall template/concept remains same. Ans: ??? I put another example to make my question clear. Lets consider one function from LDD3 that has following source: void end_request(struct request *req, int uptodate) { if(!end_that_request_first(req, uptodate, req->hard_cur_sectors)) { add_disk_randomness(req->rq_disk); blkdev_dequeue_request(req); end_that_request_last(req); } } Now consider another function from drivers/block/floppy.c static void floppy_end_request(struct request *req, int uptodate) { unsigned int nr_sectors = current_count_sectors; /* current_count_sectors can be zero if transfer failed */ if (!uptodate) nr_sectors = req->current_nr_sectors; if (end_that_request_first(req, uptodate, nr_sectors)) return; add_disk_randomness(req->rq_disk); floppy_off((long)req->rq_disk->private_data); blkdev_dequeue_request(req); end_that_request_last(req, uptodate); /* We're done with the request */ current_req = NULL; } Assume the function floppy_end_request is not from kernel and I have written it for my employer. Now the basic template of floppy_end_request is almost same as end_request from LDD3. Since end_request is copyright protected, can I not write a function like floppy_end_request function? If I can not, then does it not virtually make new block device driver writing impossible? Because all block device drivers will more or less have same code at request handling level. -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ