]> git.pld-linux.org Git - packages/lin_tape.git/blob - linux-4.0.patch
5f745beba50287c0906661156360f2d57bd3ff9c
[packages/lin_tape.git] / linux-4.0.patch
1 diff -ur lin_tape-3.0.8.orig/lower.c lin_tape-3.0.8/lower.c
2 --- lin_tape-3.0.8.orig/lower.c 2016-03-15 23:39:12.000000000 +0100
3 +++ lin_tape-3.0.8/lower.c      2016-06-19 13:16:12.828653141 +0200
4 @@ -471,6 +471,21 @@
5                 } else if (pfo_cmd->source == PFO_SOURCE_SG ||
6                            pfo_cmd->source == PFO_SOURCE_IOCTL) {
7                         if (pfo_cmd->iov_count) {
8 +#if LINUX_VERSION_CODE > KERNEL_VERSION(3,19,0)
9 +                               struct iovec *iov = NULL;
10 +                               struct iov_iter i;
11 +                               err = import_iovec(write, pfo_cmd->buffer, pfo_cmd->iov_count, 0, &iov, &i);
12 +                               if (err < 0)
13 +                                       return err;
14 +                               iov_iter_truncate(&i, pfo_cmd->bufflen);
15 +                               
16 +                               err = blk_rq_map_user_iov(sdev->request_queue,
17 +                                       rq,
18 +                                       pfo_cmd->mdata,
19 +                                       &i,
20 +                                       GFP_ATOMIC);
21 +                               kfree(iov);
22 +#else
23                                 err = blk_rq_map_user_iov(sdev->request_queue,
24                                         rq,
25                                         pfo_cmd->mdata,
26 @@ -478,6 +493,7 @@
27                                         pfo_cmd->iov_count,
28                                         pfo_cmd->bufflen,
29                                         GFP_KERNEL);
30 +#endif
31                         } else {
32                                 err = blk_rq_map_user(sdev->request_queue,
33                                         rq,
34 diff -ur lin_tape-3.0.8.orig/sgmp.c lin_tape-3.0.8/sgmp.c
35 --- lin_tape-3.0.8.orig/sgmp.c  2016-06-19 13:15:52.000000000 +0200
36 +++ lin_tape-3.0.8/sgmp.c       2016-06-19 13:16:12.828653141 +0200
37 @@ -2029,7 +2029,12 @@
38         }
39  
40         if (iov_count) {
41 +#if LINUX_VERSION_CODE > KERNEL_VERSION(3,19,0)
42 +               int size = sizeof(struct iovec) * iov_count;
43 +               struct iov_iter i;
44 +#else
45                 int len, size = sizeof(struct sg_iovec) * iov_count;
46 +#endif
47                 struct iovec *iov;
48  #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32)
49                 iov = memdup_user(hp->dxferp, size);
50 @@ -2046,6 +2051,13 @@
51                 }
52  #endif
53  
54 +#if LINUX_VERSION_CODE > KERNEL_VERSION(3,19,0)
55 +               iov_iter_init(&i, rw, iov, iov_count,
56 +                             min_t(size_t, hp->dxfer_len,
57 +                                   iov_length(iov, iov_count)));
58 +
59 +               res = blk_rq_map_user_iov(q, rq, md, &i, GFP_ATOMIC);
60 +#else
61                 len = iov_length(iov, iov_count);
62                 if (hp->dxfer_len < len) {
63                         iov_count = iov_shorten(iov, iov_count, hp->dxfer_len);
64 @@ -2055,6 +2067,7 @@
65                 res = blk_rq_map_user_iov(q, rq, md, (struct sg_iovec *)iov,
66                                           iov_count,
67                                           len, GFP_ATOMIC);
68 +#endif
69                 kfree(iov);
70         } else
71                 res = blk_rq_map_user(q, rq, md, hp->dxferp,
This page took 0.374189 seconds and 2 git commands to generate.